CascadingDropDown在保存的时的问题

listen 2009-02-07 09:11:12
比较说在用户注册页面,
使用了DetailsView控件,
在DetailsView控件中,使用CascadingDropDown来配合DropDownList实现二级无刷新连动,
DropDownList的值是通过WebService进行初如化的,
利用DetailsView控件的Save按钮进行保存时,实现二级连动的DropDownList控件的值却无法保存到DB中,
不知道什么原因????
部分代码:
.ascx
<asp:DetailsView ID="detailsview" runat="server"
EmptyDataText="................"
EmptyDataRowStyle-HorizontalAlign="Center"
EmptyDataRowStyle-VerticalAlign="Middle"
EmptyDataRowStyle-Font-Size="Large"
AutoGenerateRows="false"
DataKeyNames="ID"
DataSourceID="ds_detail"
AutoGenerateEditButton="false"
AutoGenerateDeleteButton="false"
AutoGenerateInsertButton="false"
CommandRowStyle-HorizontalAlign="Right"
BorderStyle="None" BorderWidth="0"
OnModeChanged="DetailsView_ModeChanged"
OnPreRender="DetailsView_PreRender"
OnItemDeleting="DetailsView_ItemDeleting"
OnItemDeleted="DetailsView_ItemDeleted"
OnItemInserted="DetailsView_ItemInserted"
OnItemInserting="DetailsView_ItemInsert"
OnItemUpdating="DetailsView_ItemUpdating"
CommandRowStyle-BorderStyle="None" RowStyle-Height="30px">
<Fields>
<asp:TemplateField ShowHeader="false">
<ItemTemplate>
。。。。。
</ItemTemplate>
<EditItemTemplate>
。。。。。
<tr>
<td width="20%">Country</td>
<td>
<asp:HiddenField ID="hidCountry" Value='<%# Eval("Country_ID") %>' runat="server" />
<asp:DropDownList ID="Country_ID" runat="server"></asp:DropDownList>
<cc1:CascadingDropDown ID="CascadingDropDownCountry" TargetControlID="Country_ID"
LoadingText="Loading..." PromptText="==PLEASE CHOOSE==" Category="Country_ID"
ServiceMethod="GetCountry" ServicePath="WebService.asmx" runat="server">
</cc1:CascadingDropDown>
<asp:RequiredFieldValidator ID="RequiredFieldValidator8" ControlToValidate="Country_ID"
runat="server">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td width="20%">City</td>
<td>
<asp:HiddenField ID="hidCity" Value='<%# Eval("City_ID") %>' runat="server" />
<asp:DropDownList ID="City" runat="server">
</asp:DropDownList>
<cc1:CascadingDropDown ID="CascadingDropDownCity" TargetControlID="City"
LoadingText="Loading..." PromptText="==PLEASE CHOOSE==" Category="City"
ServiceMethod="GetCity" ServicePath="WebService.asmx"
ParentControlID="Country_ID" runat="server">
</cc1:CascadingDropDown>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" ControlToValidate="City"
runat="server">*</asp:RequiredFieldValidator>
</td>
</tr>
............
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="false" ItemStyle-HorizontalAlign="Right">
<ItemTemplate>
<asp:Button ID="Update" Text="Save" CommandName="Update" runat="server" CssClass="Save"/>
<asp:Button ID="Edit" Text="Edit" CommandName="Edit" runat="server" CssClass="Save"/>
<asp:Button ID="Delete" Text="Delete" CommandName="Delete" runat="server" CssClass="Delete"/>
<asp:Button ID="Insert" Text="Save" CommandName="Insert" runat="server" CssClass="Save"/>
<asp:Button ID="New" Text="New" CommandName="New" runat="server" CssClass="Save"/>
<asp:Button ID="Cancel" Text="Cancel" CommandName="Cancel" runat="server" CausesValidation="false"
CssClass="Cancel"/>
</ItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>

<asp:SqlDataSource ID="ds_detail" runat="server" OnInserted="ds_detail_Inserted" >
<SelectParameters>
<asp:Parameter Name="ID" Type="Int32" />
</SelectParameters>
<DeleteParameters>
<asp:Parameter Name="ID" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="ID" Type="Int32" />
<asp:ControlParameter ControlID="detailsview$Country_ID" Name="Country_ID" PropertyName="SelectedValue" />
<asp:ControlParameter ControlID="detailsview$City" Name="City_ID" PropertyName="SelectedValue" />
.................
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="ID" Type="Int32" />
<asp:ControlParameter ControlID="detailsview$Country_ID" Name="Country_ID" PropertyName="SelectedValue" />
<asp:ControlParameter ControlID="detailsview$City" Name="City_ID" PropertyName="SelectedValue" />
..............
</InsertParameters>
</asp:SqlDataSource>
...全文
94 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
listen 2009-02-10
  • 打赏
  • 举报
回复
楼上的兄弟,这个代码还多啊??????

这个问题尚未解决,期待高人~~
freemeditator 2009-02-08
  • 打赏
  • 举报
回复
有冗余?
ZJ159 2009-02-08
  • 打赏
  • 举报
回复
有点难啊 顶顶
gongsun 2009-02-08
  • 打赏
  • 举报
回复
额...
liuyeede 2009-02-08
  • 打赏
  • 举报
回复
晕,代码太多
listen 2009-02-08
  • 打赏
  • 举报
回复
顶上来,期待解决

在网上查了好久,也没有一个答案,
希望处理过类似问题的朋友能够给解答一下~~非常感谢
listen 2009-02-07
  • 打赏
  • 举报
回复

.ascx.cs
protected void Page_Load(object sender, EventArgs e)
{
......
ds_detail.connectionstring = ......;
ds_detail.selectcommand = ......;
......
}

protected void DetailsView_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
{
ds_detail.ConnectionString = ...............;
ds_detail.UpdateCommand = ...............;
}

protected void DetailsView_ItemInsert(object sender, DetailsViewInsertEventArgs e)
{
ds_detail.ConnectionString = ............;
ds_detail.InsertCommand = ".............." + ";SELECT @ID = SCOPE_IDENTITY()";
ds_detail.DataBind();
}

.asmx.cs
namespace .......
{
/// <summary>
/// Summary description for WebService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService
{

[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod]
public CascadingDropDownNameValue[] GetLand(string knownCategoryValues, string category)
{
List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
DataTable Country= getCountry();
foreach (DataRow dr in country.Rows)
{
int country_id = (int)dr["DATAVALUE"];
string country= (string)dr["DATATEXT"];
values.Add(new CascadingDropDownNameValue(country, country_id.ToString()));
}
return values.ToArray();
}
[WebMethod]
public CascadingDropDownNameValue[] GetInstelling(string knownCategoryValues, string category)
{
StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
int country_id;
if (!kv.ContainsKey("Country_ID") || !Int32.TryParse(kv["Country_ID"], out country_id))
{
return null;
}
DataTable city= getCity(country_id);
List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
foreach (DataRow dr in city.Rows)
{
values.Add(new CascadingDropDownNameValue((string)dr["DATATEXT"], dr["DATAVALUE"].ToString()));
}
return values.ToArray();
}

public DataTable getCountry()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["......"].ToString());
DataSet ds = new DataSet();
SqlDataAdapter sdr = new SqlDataAdapter("SELECT ID AS [DATAVALUE], NAAM_NL AS [DATATEXT] FROM Country", conn);
sdr.Fill(ds);
return ds.Tables[0];
}

public DataTable getCity(int countryid)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["......"].ToString());
DataSet ds = new DataSet();
SqlDataAdapter sdr = new SqlDataAdapter("SELECT ID AS [DATAVALUE],Name AS [DATATEXT] FROM CityWHERE Country_ID = " + countryid.ToString(), conn);
sdr.Fill(ds);
return ds.Tables[0];
}
}
}

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧