Asp.net gridview编辑没有编辑按钮

时间:2013-11-04 13:02:04

标签: asp.net gridview grid editing

我有常规的asp.net gridview,我想在每一行中启用editmode,也没有editbutton(如excel网格)。 编辑数据我想通过点击网格外的“发布”按钮(整个网格的一个按钮)保存到我的数据库。   我怎么能达到它?

1 个答案:

答案 0 :(得分:2)

要实现这一点,您将不得不为每个列使用ItemTemplates,其中包含文本框作为控件..

<强> ASP

<asp:TemplateField HeaderText="Heading Title" SortExpression="Heading Title">
                    <ItemTemplate>
                        <asp:TextBox ID="tbTextbox" runat="server" Width="65px" Text='<%# Bind("ColumnNameYouWantToView") %>'></asp:TextBox>                              
                    </ItemTemplate>
 </asp:TemplateField>

正确设置后,您需要发布按钮。您可以将其放在网格中或网格外。我使用两者,但这里是网格内的一个作为页脚。

<强> ASP

<asp:TemplateField>
        <ItemTemplate>
             <asp:Button ID="btnView" runat="server" Text="View" OnClick="btnView_Click" Width="40px" />
        </ItemTemplate>
        <FooterTemplate>
             <asp:Button ValidationGroup="UPDATE" ID="btnUpdate" OnClick="btnUpdate_Click" runat="server" Text="Update" Width="50px"></asp:Button>
        </FooterTemplate>
        <FooterStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="50px" />
 </asp:TemplateField>

到目前为止,我发现最有效的方法是在按钮点击时使用foreach语句。这个想法的最大缺陷是它会更新每一行。它可以工作,但如果您一次只更改一行,它将更新所有行。我的寻呼机设置为10,因此总是更新10行(除非您只是搜索单个记录并更新它,否则只更新该单个记录)。

C#背后的代码

protected void btnUpdate_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["databaseConnection"].ConnectionString);
            conn.Open();

            //finds the controls within the gridview and updates them
            foreach (GridViewRow gvr in gvGridViewName.Rows)
            {
                string ID = (gvr.FindControl("lblId") as Label).Text.Trim();//finds the control in the gridview
                string anotherControl = ((TextBox)gvr.FindControl("tbTextBox")).Text.Trim();//finds the textbox in the gridview

                 //Your update or insert statements


         }

我就是这样做的。您也可以查看Real World Grids但我没有太多运气,因为如果文本框为空,我总是会收到错误。然而,这应该是“智能”足以只更新已经更改的行,但同样,我没有太多运气这样做。希望这有帮助!