在C#和ASP.NET中,从网格视图中的组合框中获取记录

本文关键字:视图 组合 记录 获取 网格 ASP NET | 更新日期: 2023-09-27 18:26:16

hi我有三列的网格视图产品名称、单位、费率。。。。产品名称有我想要的组合框当我从组合框中选择产品时,它会从数据库中选择单位和费率,并显示在单位和费率列中。例如,如果我选择产品大米,它会在数据库中选择单元=公斤和费率=100。请指导我如何实现这一点。

在C#和ASP.NET中,从网格视图中的组合框中获取记录

据我所知,您有一个如下所示的GridView:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="ID">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
                        onselectedindexchanged="DropDownList1_SelectedIndexChanged">
                        <asp:ListItem Value="1">Test1</asp:ListItem>
                        <asp:ListItem Value="2">Test2</asp:ListItem>
                    </asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

你可以这样使用你的控件:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    Control cont = (Control)sender;
    GridViewRow row = (GridViewRow)(cont).NamingContainer;
    int rowID = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value);
    DropDownList dropdown = (DropDownList)row.Cells[0].FindControl("DropDownList1");
    ///now you have dropdownlist.seletedvalue
    TextBox text1 = (TextBox)row.Cells[0].FindControl("TextBox1");
    ///now you have textbox1.text
    TextBox text2 = (TextBox)row.Cells[0].FindControl("TextBox2");
    ///now you have textbox2.text
}