Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有更新功能的C Linq到datagrid_C#_Linq_Datagrid - Fatal编程技术网

C# 具有更新功能的C Linq到datagrid

C# 具有更新功能的C Linq到datagrid,c#,linq,datagrid,C#,Linq,Datagrid,我想做一个datagrid,它允许用户编辑当前信息并添加新内容。我还需要它有一个复选框在那里,我可以回应。基本上,它是一个名称和一个isActive字段,由datagrid每行中的一个复选框表示 我想使用linq来实现这一点,但不确定这是否可行。这是一个ASP.Net网站 如果有人有任何反馈,那就太棒了。很容易做到 GridView中有许多事件,您可以将这些事件用于特定的删除、编辑、取消和更新操作。例如,onrowUpdate和OnRowEditing的外观如下所示: <asp:GridV

我想做一个datagrid,它允许用户编辑当前信息并添加新内容。我还需要它有一个复选框在那里,我可以回应。基本上,它是一个名称和一个isActive字段,由datagrid每行中的一个复选框表示

我想使用linq来实现这一点,但不确定这是否可行。这是一个ASP.Net网站

如果有人有任何反馈,那就太棒了。

很容易做到

GridView中有许多事件,您可以将这些事件用于特定的删除、编辑、取消和更新操作。例如,onrowUpdate和OnRowEditing的外观如下所示:

<asp:GridView ID="gvTest" runat="Server" OnRowUpdating="gvTest_RowUpdating" OnRowEditing="gvTest_RowEditing">
    <Columns>
    <asp:TemplateField>
        <ItemTemplate>
        <asp:Button ID="btnUpdate" runat="Server" Text="Update" CommandName="Update">
        <asp:Button ID="btnEdit" runat="Server" Text="Edit" CommandName="Edit">
        </ItemTemplate>
    </asp:TemplateField>
    </Columns>
</asp:GridView>
protected void gvTest_RowUpdating(object sender, GridViewUpdateEventArgs e) {
  // Convenient access to the row index that was selected
  int theRowIndex = e.RowIndex;
  GridViewRow gvr = gvTest.Rows[e.RowIndex];

  // Now its just a matter of tracking down your various controls in the row and doing 
  // whatever you need to with them
  TextBox someTxtBox = (TextBox)gvr.FindControl("theTextBoxID");
  DropDownList someDDL = (DropDownList)gvr.FindControl("theDDL_ID");

  // Perhaps some business class that you have setup to take the value of the textbox
  // and insert it into a table
  MyDoSomethingClass foo = new MyDoSomethingClass {
    FirstName = someTxtBox.Text,
    Age = someDDL.SelectedItem.Value
  };

  foo.InsertPerson();
}
请注意,您也可以使用onrow命令而不是使用Update Edit、Delete等事件,但是onrow命令没有现成的选定行索引。如果你想要它,那么你必须在你的标记中做一点魔术

<asp:Button ID="btnDoSomething" runat="Server" Text="Do Something" CommandArgument="<%# Container.DataItemIndex %>" CommandName="DoSomething">
编辑:

实际上,访问GridView绑定到的键非常简单。假设您的GridView仅绑定到一个键,您可以通过以下方式获取键:假设我们处于RowCommand事件中:

int rowIdx = Convert.ToInt32(e.CommandArgument);
int someKeyID = Convert.ToInt32(gvTest.DataKeys[rowIdx].Value);
很容易做到

GridView中有许多事件,您可以将这些事件用于特定的删除、编辑、取消和更新操作。例如,onrowUpdate和OnRowEditing的外观如下所示:

<asp:GridView ID="gvTest" runat="Server" OnRowUpdating="gvTest_RowUpdating" OnRowEditing="gvTest_RowEditing">
    <Columns>
    <asp:TemplateField>
        <ItemTemplate>
        <asp:Button ID="btnUpdate" runat="Server" Text="Update" CommandName="Update">
        <asp:Button ID="btnEdit" runat="Server" Text="Edit" CommandName="Edit">
        </ItemTemplate>
    </asp:TemplateField>
    </Columns>
</asp:GridView>
protected void gvTest_RowUpdating(object sender, GridViewUpdateEventArgs e) {
  // Convenient access to the row index that was selected
  int theRowIndex = e.RowIndex;
  GridViewRow gvr = gvTest.Rows[e.RowIndex];

  // Now its just a matter of tracking down your various controls in the row and doing 
  // whatever you need to with them
  TextBox someTxtBox = (TextBox)gvr.FindControl("theTextBoxID");
  DropDownList someDDL = (DropDownList)gvr.FindControl("theDDL_ID");

  // Perhaps some business class that you have setup to take the value of the textbox
  // and insert it into a table
  MyDoSomethingClass foo = new MyDoSomethingClass {
    FirstName = someTxtBox.Text,
    Age = someDDL.SelectedItem.Value
  };

  foo.InsertPerson();
}
请注意,您也可以使用onrow命令而不是使用Update Edit、Delete等事件,但是onrow命令没有现成的选定行索引。如果你想要它,那么你必须在你的标记中做一点魔术

<asp:Button ID="btnDoSomething" runat="Server" Text="Do Something" CommandArgument="<%# Container.DataItemIndex %>" CommandName="DoSomething">
编辑:

实际上,访问GridView绑定到的键非常简单。假设您的GridView仅绑定到一个键,您可以通过以下方式获取键:假设我们处于RowCommand事件中:

int rowIdx = Convert.ToInt32(e.CommandArgument);
int someKeyID = Convert.ToInt32(gvTest.DataKeys[rowIdx].Value);

我得到了“GridViewUpdateEventArgs不包含RowIndex的定义”感谢您花时间回复此问题。你说我可以找到控件,我只是通过模板添加控件吗?我需要显示一个名称和一个isActive字段,差不多就是这样。我希望他们能够编辑并删除内容。@Blake-我不确定为什么RowIndex属性对您不可用。自从GridView随ASP.NET 2.0发布以来,它一直是EventArgs的一个属性。您使用的是哪种框架?@Jagd抱歉,我没有尽快回复。这是.NET4,老实说,我不知道为什么。我不想重新创建整个项目,因为它非常大,而且要设置@$$非常麻烦。如果你有任何建议,那就太好了。即使构建一个自定义的问题也可以。我唯一能想到的建议是编辑您的原始问题并包含一些代码,也许这会让您了解一些事情。德国劳埃德船级社!我得到了“GridViewUpdateEventArgs不包含RowIndex的定义”感谢您花时间回复此问题。你说我可以找到控件,我只是通过模板添加控件吗?我需要显示一个名称和一个isActive字段,差不多就是这样。我希望他们能够编辑并删除内容。@Blake-我不确定为什么RowIndex属性对您不可用。自从GridView随ASP.NET 2.0发布以来,它一直是EventArgs的一个属性。您使用的是哪种框架?@Jagd抱歉,我没有尽快回复。这是.NET4,老实说,我不知道为什么。我不想重新创建整个项目,因为它非常大,而且要设置@$$非常麻烦。如果你有任何建议,那就太好了。即使构建一个自定义的问题也可以。我唯一能想到的建议是编辑您的原始问题并包含一些代码,也许这会让您了解一些事情。德国劳埃德船级社!