使用隐藏值从linq创建多个记录的删除/编辑按钮?

时间:2009-08-19 15:22:53

标签: c# linq edit delete-row

Aspx表格:

<asp:Table ID="viewV" runat="server">
  <asp:TableRow>
    <asp:TableHeaderCell>Name</asp:TableHeaderCell>
    <asp:TableHeaderCell>Type</asp:TableHeaderCell>
  </asp:TableRow>       
</asp:Table>

以下代码:

vRepository getV = new vRepository();

var viewAllV = getV.GetV();

foreach (tblV singleV in viewAllV)
{
    TableRow tr = new TableRow();

    // Create four new cells for each row within the database

    TableCell vName = new TableCell();
    TableCell vType = new TableCell();

    // Attached values to each of these cells

    vName.Text = singleV.vName;
    vType.Text = singleV.tblVType.vName;

    // Add the cells to the table

    tr.Cells.Add(vName);
    tr.Cells.Add(vType);

    // Add the row to the table

    viewV.Rows.Add(tr);
}

我目前正在使用LINQ填充asp:table,这很好。

public IQueryable<tblV> GetV()
{
    return (from getAllV in dc.tblV
            where getAllV.deleted != 1
            orderby getAllV.vName
            select getAllV).DefaultIfEmpty();
}

我已经尝试了GridView / ListView / DetailsView,但似乎无法访问GetV,我只能访问实际的表。

我想在每行的末尾添加一个编辑/删除按钮,以便用户可以选择他们想要编辑/删除的行。

一旦用户选择了编辑/删除按钮,就应该访问另一个视图(一个用于编辑,一个用于添加 - 在同一个aspx文件中)。

例如:

Name    Type

Example 1   Type 1  Edit Button Delete Button

Example 2   Type 1  Edit Button Delete Button

我希望能够为“示例1”选择“编辑”按钮。这应该是:

  1. 转到“编辑视图”,
  2. 使用正确的信息自动填充两个文本字段
  3. 使用唯一ID(PK)更新行(在数据库中)和新信息。
  4. 为什么我会生成多个编辑/删除按钮,以某种方式保存该行的唯一ID?

    我认为会是这样的:

    TableCell vEdit = new TableCell();
    vEdit.Button = singleV.vID;
    tr.Cells.Add(vEdit);
    

1 个答案:

答案 0 :(得分:1)

如果您真的想要“硬编码”它,请使用ASP.NET MVC。否则,你真的应该使用某种数据绑定控制。

那就是说,如果你坚持这种方法,你可能会做这样的事情:

Button editButton = new Button();
editButton.Text = "Edit";
editButton.CommandArgument = singleV.vID.ToString();
editButton.CommandName = "Edit";
editButton.OnCommand += new CommandEventHandler(EditButton_Command);

TableCell vEdit = new TableCell();
vEdit.Controls.Add(editButton);

tr.Cells.Add(vEdit);

然后,从事件处理程序的CommandEventArgs,您可以检索参数并相应地更改视图。