我正在C#/ ASP中编写一个编辑页面,并且有一组级联下拉列表,这些列表在数据库中已经具有需要为用户预先选择的值。在页面本身,我已经在使用:在C#ASP中预填充多个级联下拉列表
<asp:CascadingDropDown ID="CascadingDropDown1" runat="server" TargetControlID="itemMCat" Category="itemMCat" PromptText="Select a Main Category" ServicePath="categoryService.asmx" ServiceMethod="getMCat"></asp:CascadingDropDown>
<asp:CascadingDropDown ID="CascadingDropDown2" runat="server" TargetControlID="itemCat" ParentControlID="itemMCat" PromptText="Please select a Category" ServiceMethod="getCat" ServicePath="categoryService.asmx" Category="itemCat"></asp:CascadingDropDown>
<asp:CascadingDropDown ID="CascadingDropDown3" runat="server" TargetControlID="itemSCat" ParentControlID="itemCat" PromptText="Please select a Sub Category" ServiceMethod="getSubCat" ServicePath="categoryService.asmx" Category="itemSCat"></asp:CascadingDropDown>
来操作列表。但是,由于这个原因,它迫使用户不得不重新选择值(因为它们是以前选择的)。这对我来说是个问题,因为它是一个编辑页面,我只想让它们改变需要改变的内容,而不是重新选择所有内容。
在后端,我选择数据和调用函数来填充列表(起初,只是试图将下拉列表设置为数据库中的值,但由于后面的代码不起作用在页面加载之前运行[所以在代码顶部运行之前])。此代码确实有效,但仅在上述代码被取出时才有效。如果未取出,则此代码不起作用。
Dictionary<string, string> catagoryMList;
catagoryMList = CowansPublic.getMCat();
Dictionary<string, string> catagoryList;
catagoryList = CowansPublic.getCat(mainCategory);
Dictionary<string, string> catagorySList;
catagorySList = CowansPublic.getSubCat(category);
itemMCat.DataSource = catagoryMList;
itemMCat.DataTextField = "Value";
itemMCat.DataValueField = "Key";
itemMCat.DataBind();
itemMCat.SelectedValue = mainCategory;
itemCat.DataSource = catagoryList;
itemCat.DataTextField = "Value";
itemCat.DataValueField = "Key";
itemCat.DataBind();
itemCat.SelectedValue = category;
itemSCat.DataSource = catagorySList;
itemSCat.DataTextField = "Value";
itemSCat.DataValueField = "Key";
itemSCat.DataBind();
itemSCat.SelectedValue = subCategory;
那么,如何保持级联下拉效果,但所有3下拉列表已经填入保存的信息?提前致谢。
**编辑:响应于**的评论
@Nelson李嘉欣:我的意思它只有在顶码取出的是,我不能工作预先选择一个用户有选择选择(根据数据库中的数据),将.selectedValue代码放入代码隐藏页面。
@Arthur P:是的,DDL1是唯一一个你可以做任何事情的人,除非你在其中选择了一些东西,这会激活DDL2,等等。但是因为这是编辑页面,所以我希望它们全部都是当前已经选择的选项。取出代码的顶部,我的代码隐藏了这一点。但是,它不再像级联下拉式一样工作。
我不明白。你说过:“这段代码确实有效,但只有当上面的代码被取出时”。在这种情况下,如果它有效,那么问题是什么?什么不见了? –
请澄清一下这个问题 - 当用户从DDL1中选择值时,DDL2会根据它填充一些东西;对于DDL2和DDL3也是如此,但是每当新的列表填充时,旧的都会丢失它的价值? –