使用从其他表中获取的数据在Gridview中设置数据绑定DropDown的默认值

时间:2013-11-06 22:29:49

标签: c# asp.net sql gridview aspxgridview

我使用ASP.NET和C#来设计gridview。 gridview有两个绑定字段(NAME和CODE)和一个模板下拉列表(PAY)字段。

使用数据库DB1填充Gridview,它返回NAME,CODE和PAY。我能够按预期获取这些值,并填充gridview的NAME和CODE字段。

                 <asp:BoundField DataField="NAME" HeaderText="NAME" 
                SortExpression="NAME" />
            <asp:BoundField DataField="CODE" HeaderText="CODE" SortExpression="CODE" />
            <asp:TemplateField HeaderText="PAY" SortExpression="PAY"> 
                <ItemTemplate> 
                    <asp:DropDownList ID="DropDownList1" runat="server" DataTextField="CODE" DataValueField="CODE" 
                    OnSelectedIndexChanged="DropDownList_SelectedIndexChanged" AutoPostBack="True" AppendDataBoundItems="true">
                        <asp:ListItem Text="Choose New Value"></asp:ListItem>   
                    </asp:DropDownList> 
                </ItemTemplate> 
            </asp:TemplateField> 

模板Dropdownlist的可能值列表使用从其他DataSource DB2获取的数据进行绑定。我能够获取这些值并成功填充下拉列表。

我的要求是gridview的数据库DB1查询返回的PAY字段应该最初设置为下拉列表的默认值。

请在这方面帮助我。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用GridView1_RowDataBound事件来处理此

    void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");

            if (ddl != null)
            {

                ListItem li = ddl.Items.FindByText(DataBinder.Eval(e.Row.DataItem, "CODE").ToString());

                if (li != null)
                    li.Selected = true;

            }


        }
    }