如何编辑整个列的所有行asp:GridView
本文关键字:asp GridView 何编辑 编辑 | 更新日期: 2023-09-27 18:13:37
所以我用谷歌搜索了stackoverflow,现在我的大脑超载了。我是asp.net的新手,但正在掌握它的窍门。
我目前的要求是有一个gridview,在加载时,所有行的1列立即被置于编辑模式。我用这个问题和代码让我开始:
允许编辑一列而不允许编辑另一列
<asp:gridview id="CustomersGridView"
datasourceid="CustomersSqlDataSource"
autogeneratecolumns="false"
autogenerateeditbutton="true"
allowpaging="true"
datakeynames="CustomerID"
runat="server">
<columns>
<asp:boundfield datafield="CustomerID" readonly="true" headertext="Customer ID"/>
<asp:boundfield datafield="CompanyName" readonly="true" headertext="Customer Name"/>
<asp:boundfield datafield="Address" headertext="Address"/>
<asp:boundfield datafield="City" headertext="City"/>
<asp:boundfield datafield="PostalCode" headertext="ZIP Code"/>
</columns>
</asp:gridview>
我已经搜索并发现了一些好的解决方案,然而,我并不完全理解它们,并且在实施它们时没有成功。它们是:
编辑/更新单个GridView字段
将gridview的多行设置为编辑模式
所以我的问题是,你将如何去放置一列,(例如,邮政编码)进入编辑模式的所有行在同一时间?
感谢所有的帮助!
谢谢!
斯蒂芬您将无法使用内置的编辑功能,但是您可以通过使用TemplateField
:
<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand" ...>
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("SomeColumn") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="SomeOtherColumn" HeaderText="Foo" />
...
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" CommandName="Update" CommandArgument='<%# Container.ItemIndex %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
后台代码:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
GridViewRow row = GridView1.Rows[(int)e.CommandArgument];
if (row != null)
{
TextBox txt = row.FindControl("TextBox1") as TextBox;
if (txt != null)
{
//get the value from the textbox
string value = txt.Text;
}
}
}
EDIT:把一个按钮放在GridView的外面,你会这样更新:
<asp:GridView>
...
</asp:GridView>
<asp:Button ID="Button1" runat="server" Text="Update" OnClick="Button1_Click" />
后台代码:
protected void Button1_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
TextBox txt = row.FindControl("TextBox1") as TextBox;
if (txt != null)
{
//get the value from the textbox
string value = txt.Text;
}
}
}