如何编辑/删除网格视图中没有数据键ASP.NET的行

时间:2014-10-08 11:51:20

标签: c# asp.net .net excel ado.net

我正在使用asp.net网格视图来显示Excel工作表中的数据。我还可以使用网格视图将数据添加到此Excel工作表。我面临的问题是编辑/更新和删除gridview / excel中的记录。当我更新一行时,它会更新每一行。

我没有主键,因为它是excel表,只有两列名称和值,两者都应该是可更新的

这是我尝试的内容

    GridViewRow row = (GridViewRow)gvExcelFile.Rows[e.RowIndex];
    TextBox TxtEditName = (TextBox)row.FindControl("TxtEditName");
    TextBox TxtEditValue = (TextBox)row.FindControl("TxtEditValue");

    string enm = TxtEditName.Text;
    string evl = TxtEditValue.Text;
    gvExcelFile.EditIndex = -1;
    conn.Open();

    string editquery = "UPDATE [Sheet1$] set [Name]=? ,[Value]=?";
    OleDbCommand editcmd = new OleDbCommand(editquery, conn);
    editcmd.Parameters.AddWithValue("[Name]", enm);
    editcmd.Parameters.AddWithValue("[Value]", evl);
    editcmd.ExecuteNonQuery();
    conn.Close();
    gvbind();

3 个答案:

答案 0 :(得分:0)

您可以使用自动生成的列并将其用作主列

 <asp:TemplateField HeaderText="S No">
       <ItemTemplate>
                <%# Container.DataItemIndex + 1 %>
            </ItemTemplate>
 </asp:TemplateField>

答案 1 :(得分:0)

我也试过这样做,我在网格视图中直接更新excel中的单元格,但是它给出了一个错误 - “System.Data.OleDb.OleDbException:UPDATE语句中的语法错误”。这也行不通

        GridViewRow row = (GridViewRow)gvExcelFile.Rows[e.RowIndex];
        TextBox TxtEditName = (TextBox)row.FindControl("TxtEditName");
        TextBox TxtEditValue = (TextBox)row.FindControl("TxtEditValue");

        string enm = TxtEditName.Text;
        string evl = TxtEditValue.Text;
        int editindex = gvExcelFile.EditIndex;
        int currentindex = e.RowIndex;
         string editquery = "UPDATE [Sheet1$] set Sheet1$A"+currentindex+"=? ,Sheet1$B"+currentindex+"=?";
        gvExcelFile.EditIndex = -1;
        conn.Open();


        OleDbCommand editcmd = new OleDbCommand(editquery, conn);
        editcmd.Parameters.AddWithValue("Sheet1$A"+currentindex, enm);
        editcmd.Parameters.AddWithValue("Sheet1$B"+currentindex, evl);
        editcmd.ExecuteNonQuery();
        conn.Close();
        gvbind();

答案 2 :(得分:0)

尝试使用它?

QueryString="UPDATE [Sheet1$] SET [name]=<new value>, [value]=<new vlue> WHERE ( [name]=<old name> AND [value]=<old value>)