具有动态行数据类型的Gridview

时间:2012-09-25 18:18:23

标签: c# asp.net gridview

基本上我从sql表填充gridview。但问题是特定列中的这些数据有时需要显示为下拉列表,有时候是文本框。

e.g。 ColA数据始终采用标签格式。但ColB可以是下拉列表或文本框。

ColA   |   ColB
-----------------
label  |  ddlist    
label  |  textbox    
label  |  ddlist

如何为每个ColB行动态设置类型? 我想也许可以使用OnRowDatabound完成,但似乎无法找到方法?这可能吗?

1 个答案:

答案 0 :(得分:0)

试试这个:使用TemplateField进行ColB并同时放置TextBox和DropdownList

<asp:TemplateField HeaderText="ColB">
    <asp:TextBox runat="server" ID="txtVal" />
    <asp:DropdownList runat="server" ID="drpVal"></asp:DropdownList>
</asp:TemplateField>

在gridview的数据绑定中执行此操作

void myGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
        TextBox txtVal = (TextBox)e.Row.FindControl("txtVal");
        DropDownList drpVal = (DropDownList)e.Row.FindControl("drpVal");

        if (txtVal != null && drpVal != null)
        {
            if (condition == true)
            {
                txtVal.Text = "Default value";
                drpVal.Visible = false;
            }
            else
            {
                drpVal.Items.Add("Item1");
                drpVal.Items.Add("Item2");
                drpVal.Items.Add("Item3");
                txtVal.Visible = false;
            }
        }
}