C# 具有动态行数据类型的Gridview

C# 具有动态行数据类型的Gridview,c#,asp.net,gridview,C#,Asp.net,Gridview,基本上,我是从sql表填充gridview。但问题是,特定列中的数据有时需要显示为下拉列表,有时需要显示为文本框 e、 g.ColA数据始终采用标签格式。但是ColB可以是下拉列表或文本框 ColA | ColB ----------------- label | ddlist     label | textbox     label | ddlist 如何动态设置每个ColB行的类型?? 我想也许可以用OnRowDatabound完成,但似乎找不到办法?这是可能的吗?试

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

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

ColA   |   ColB
-----------------
label  |  ddlist    
label  |  textbox    
label  |  ddlist
如何动态设置每个ColB行的类型??
我想也许可以用OnRowDatabound完成,但似乎找不到办法?这是可能的吗?

试试这个:对ColB使用TemplateField,并将TextBox和DropdownList都放进去

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

欢迎来到stackoverflow。花点时间读一读魔兽世界就是这样!我昨天花了大半时间想弄明白。甚至没有考虑将两者都添加并设置为可见。非常感谢您对codingbiz的帮助!
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;
            }
        }
}