C# 在下拉列表中,选定的索引已更改,我想在gridview中创建动态空文本框
我想在gridview中创建动态文本框,当我们创建5个动态文本框的每一行中的下拉选定索引发生更改时。当我使用谷歌搜索的一些代码在rowdatabound或ondatabound中创建动态文本框代码时,它不会启动,有人能帮我吗C# 在下拉列表中,选定的索引已更改,我想在gridview中创建动态空文本框,c#,asp.net,C#,Asp.net,我想在gridview中创建动态文本框,当我们创建5个动态文本框的每一行中的下拉选定索引发生更改时。当我使用谷歌搜索的一些代码在rowdatabound或ondatabound中创建动态文本框代码时,它不会启动,有人能帮我吗 <asp:DropDownList ID="ddlClassUnits" runat="server" class="textusername" Style="width: 100%;" ValidationGroup="ClassesRequired"
<asp:DropDownList ID="ddlClassUnits" runat="server" class="textusername"
Style="width: 100%;" ValidationGroup="ClassesRequired"
OnSelectedIndexChanged="ddlClassUnits_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Text="--Select--" Value="0"></asp:ListItem>
<asp:ListItem Text="Unit-1" Value="1"></asp:ListItem>
<asp:ListItem Text="SelectAll" Value="2"></asp:ListItem>
</asp:DropDownList>
<asp:GridView ID="GridViewclass" runat="server"
OnRowDataBound="GridViewclass_RowDataBound"
OnDataBound="GridViewclass_DataBound" AutoGenerateColumns="False"
AutoGenerateSelectButton="true"
HeaderStyle- BackColor="#174A63" HeaderStyle-ForeColor="white"
AllowPaging="true" Font- Size="14px" Style="margin-left: 16%;"
PageSize="15" Width="300px">
<SelectedRowStyle CssClass="selectedRowStyle" />
</asp:GridView>
我认为您应该避免创建“文本框”——您需要做的是修改底层数据源以包含所需数量的新列,并设置
AutoGenerateColumns=“True”
,以便能够简单地刷新GridView
这将为您提供一个可编辑的网格,而无需手动创建单个控件
另一种选择是预先确定列的最大数量,并在选择更改时显示更多列(AutoGenerateColumns=“False”
)
我玩了一点,可以给你一个基本的想法-但我看到另一个大问题上升,当你想保存你的数据。。。但如果你不了解你的任务,就无法回答这个问题 布局
<asp:DropDownList ID="ddlClassUnits"
OnSelectedIndexChanged="ddlClassUnits_SelectedIndexChanged"
AutoPostBack="true"
runat="server">
<asp:ListItem Text="--Select--" Value="0"></asp:ListItem>
<asp:ListItem Text="Unit-1" Value="1"></asp:ListItem>
<asp:ListItem Text="SelectAll" Value="2"></asp:ListItem>
</asp:DropDownList>
<asp:GridView ID="ClassGrid"
runat="server"
AutoGenerateColumns="false"
EditIndex="0">
</asp:GridView>
请注意,这没有任何意义-它只是显示了当添加新行或将现有行设置为编辑模式时,如何动态添加提供文本框的列。能否显示
ddlclassinuts\u SelectedIndexChanged
方法中的内容?但是,您可以始终使用文本框将ItemTemplate
添加到GridView中,并根据DropDownList显示/隐藏整个列。我想从代码隐藏创建它,因此使用AutoGenerateColumns=“False”。我是这个领域的新手,所以请帮忙创建它。感谢如果您可以更新您的帖子,以显示绑定到GridView的数据类型,我可以更新我的答案来告诉你们我的意思。当textboxt被创建时,我们在每一列中创建了空的textbox,然后用户将填充该textbox并从中保存。嘿,伙计,你们在吗?我的示例是否让你们相信,不创建textbox,你们所需要的是可能的?
protected void ddlClassUnits_SelectedIndexChanged(object sender, EventArgs e)
{
// get a dummy data source with 5 columns
DataTable dt = this.GetData(5);
// assign it as GridView data source
this.GridViewclass.DataSource = dt;
// create bound columns for your GridView
foreach (DataColumn col in dt.Columns)
{
BoundField field = new BoundField();
field.DataField = col.ColumnName;
field.HeaderText = col.ColumnName;
this.GridViewclass.Columns.Add(field);
}
this.GridViewclass.DataBind();
}
// creates a DataTable as datasource for your GridView with as many columns as you like
private DataTable GetData(int cols)
{
DataTable dt = new DataTable("Class");
// auto-generate columns
for (int i = 0; i < cols; i++)
{
dt.Columns.Add($"col{i}", typeof(string));
}
// create an empty row just so you see something
var dr = dt.NewRow();
dt.Rows.Add(dr);
return dt;
}