ASP.NET-无法将更改从GridView保存到数据库

问题描述 投票:3回答:1

我有一个GridView。它的开头有一个复选框,其他列是自动生成的:

<asp:GridView ID="DailyData"
    EmptyDataText="No data."
    CssClass="data-grid"
    HeaderStyle-CssClass="HeaderText"
    Width="100%"
    Visible="true"
    runat="server">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox runat="server" />
            </ItemTemplate>
            <HeaderStyle Font-Bold="True" />
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<asp:Button ID="btnEdit" OnClick="btnEdit_Click" Text="Editar" runat="server" />
<asp:Button ID="btnSave" OnClick="btnSave_Click" Text="Guardar" runat="server" />
DailyData.AutoGenerateColumns = true;
DailyData.DataSource = dataTable;
DailyData.DataBind();

[当我单击“编辑”按钮时,它将在所需的单元格中添加文本框控件,并将cell.text放在textbox.text上:

protected void btnEdit_Click(object sender, EventArgs e)
{
    if (DailyData.Rows.Count > 0)
    {
        int checks = 0;
        foreach (GridViewRow gvr in DailyData.Rows)
        {
            CheckBox check = gvr.Cells[0].Controls[1] as CheckBox;
            if (check.Checked == true)
            {
                foreach (DataControlFieldCell cell in gvr.Cells)
                {
                    if (!cell.ContainingField.HeaderText.Contains("DATE") &&
                        !cell.ContainingField.HeaderText.Contains("ID") &&
                        !cell.ContainingField.HeaderText.Contains("CP") &&
                        !cell.ContainingField.HeaderText.Equals(""))
                    {
                        string texto = cell.Text;
                        if (texto == "&nbsp;")
                            texto = "";
                        cell.Text = "";
                        TextBox txt = new TextBox();
                        txt.Text = texto;
                        cell.Controls.Add(txt);
                    }
                }
                checks++;
            }
        }
        if (checks == 0)
        {
            Page.ClientScript.RegisterClientScriptBlock(GetType(), "popup", "alert('There isn't any row checked')", true);
        }
    }
}

[当我尝试保存这些文本框(用户已编辑)的信息时出现问题。当我单击“保存”按钮时,GridView的单元格中没有任何文本框控件。

我已经尝试在创建文本框后将GridView保存到Session变量中。并且它有效,但是问题仍然存在...这些文本框的用户输入未保存到该Session变量中,因此,单击“保存”按钮时,它们上不存在任何textbox.text。

请问有关如何操作的任何建议?

保存按钮的代码与编辑按钮的代码几乎相同,只是不添加文本框,而是获取textbox.text并将其发送到数据库。

c# asp.net gridview
1个回答
0
投票

嗯,我需要在明天之前完成此操作,但找不到任何解决方案。所以这就是我要做的,即使将来对某人有帮助。

1)在.aspx中创建一个隐藏的标签>

2)创建一个JavaScript函数,将每个textbox.text存储到label.value中(连接)

3)将保存的按钮OnClick更改为OnClientClick =“ JavaScriptFunction”

4)使用旧的保存按钮OnClick(调用后端)在.aspx中创建一个隐藏按钮。>

5)单击JavaScriptFunction末尾的隐藏按钮>

6)从后端的标签中获取存储的数据

这只是为了避免回发。

© www.soinside.com 2019 - 2024. All rights reserved.