如何编辑整个列的所有行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的多行设置为编辑模式

所以我的问题是,你将如何去放置一列,(例如,邮政编码)进入编辑模式的所有行在同一时间?

感谢所有的帮助!

谢谢!

斯蒂芬

如何编辑整个列的所有行asp: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;
        }
    }
}