我想在gridview中创建动态文本框,当我们创建5个动态文本框的每一行中的下拉选择索引更改时。当我使用谷歌搜索中的一些代码在rowdatabound或ondatabound中创建动态文本框代码时它不会触发任何人都可以帮助我Thanx
<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>
答案 0 :(得分:0)
我认为你应该避免创造&#34;文本框&#34; - 您需要做的是修改基础DataSource以包含所需数量的新列,并设置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>
我确实设置了EditIndex="0"
,因此您可以立即看到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;
}
请注意,这并没有做任何明智的事情 - 它只是展示了如何动态添加列,在添加新行或将现有行设置为编辑模式时为您提供TextBox。