如题:detailsview insert mode 中有两个下拉列表框,如何让他们联动,联动效果有刷新的也没问题.
我现在搞不懂第二个下拉框如何取得第一个下拉的seletedvalue,

解决方案 »

  1.   

                    <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataKeyNames="schoolid"
                        DataSourceID="sdsSubjects" DefaultMode="Insert" Height="50px" Width="244px">
                        <Fields>
                            <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
                                SortExpression="id" />
                            <asp:TemplateField HeaderText="学校" SortExpression="schoolid">
                                <EditItemTemplate>
                                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("schoolid") %>'></asp:TextBox>
                                </EditItemTemplate>
                                <InsertItemTemplate>
                                    <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="odsSchools"
                                        SelectedValue='<%# Bind("schoolid") %>' DataTextField="schools" DataValueField="id">
                                    </asp:DropDownList>
                                </InsertItemTemplate>
                                <ItemTemplate>
                                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("schoolid") %>'></asp:Label>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="年级" SortExpression="gradeid">
                                <EditItemTemplate>
                                    <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("gradeid") %>'></asp:TextBox>
                                </EditItemTemplate>
                                <InsertItemTemplate>
                                    <asp:DropDownList ID="DropDownList2" runat="server" SelectedValue='<%# Bind("gradeid") %>' DataSourceID="odsGrades" DataTextField="grades" DataValueField="id">
                                    </asp:DropDownList>
                                </InsertItemTemplate>
                                <ItemTemplate>
                                    <asp:Label ID="Label2" runat="server" Text='<%# Bind("gradeid") %>'></asp:Label>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:BoundField DataField="subjects" HeaderText="科目" SortExpression="subjects" />
                            <asp:CommandField ShowInsertButton="True" />
                        </Fields>
                    </asp:DetailsView>
      

  2.   

    给DropDownList1绑定一个事件SelectedIndexChanged,如下:
    <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
    </asp:DropDownList>
    在事件中可以抓出DropDownList2,然后你就可以为所欲为了
        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            DropDownList ddl = (DropDownList)DetailsView1.FindControl("DropDownList2");
        }
      

  3.   

    抓DropDownList1可以这样
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            DropDownList ddl1 = (DropDownList)sender;
            DropDownList ddl = (DropDownList)DetailsView1.FindControl("DropDownList2");
        }
      

  4.   

    我都是建一个DATASET,
    然后在里面写SQL语句的。。