[英]C# Question About Delete Data Grid
我已将数据网格绑定到数组。 此外,还有一个按钮可以删除该行。 问题是我不确定如何实现它,因为数据源是一个数组。
见下文
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label ID="lblItems" runat="server" Text='<%# Container.DataItem>' />
</ItemTemplate>
</asp:TemplateColumn>
<asp:ButtonColumn ButtonType="PushButton" CommandName="Delete" Text="Delete">
</asp:ButtonColumn>
</Columns>
在这里我想实现它..
private void DataGrid1_DeleteCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
int rowToDelete = e.Item.ItemIndex;
myDataGrid.DataBind();
}
在删除代码中,如何根据单击的按钮(每行)访问数组的索引?
这是一个例子
标记。
<asp:DataGrid ID="DataGrid1" runat="server"
AutoGenerateColumns="False"
OnDeleteCommand="DataGrid1_DeleteCommand">
<Columns>
<asp:TemplateColumn HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblItems" runat="server"
Text='<%# Container.DataItem %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:ButtonColumn ButtonType="PushButton"
CommandName="Delete"
HeaderText="Actions"
Text="Delete">
</asp:ButtonColumn>
</Columns>
</asp:DataGrid>
代码隐藏。
private static string[] names = new string[] { "Matt", "Joanne", "Robert" };
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
DataGrid1.DataSource = names;
DataGrid1.DataBind();
}
protected void DataGrid1_DeleteCommand(object source, DataGridCommandEventArgs e)
{
string deletedItem = ((Label) DataGrid1.Items[e.Item.ItemIndex].FindControl("lblItems")).Text;
names = names.Where(val => val != deletedItem).ToArray();
BindGrid();
}
希望这可以帮助。
您是否尝试过使用以下方法访问您的 src object(注意这是 gridview 上的“RowDeleting”事件)?
protected void gv_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
MyObject o = (MyObject)gv.Rows[e.RowIndex].DataItem;
}
还有其他技巧,例如将 id 存储在行的隐藏字段中,然后在删除命令上搜索控件并提取值。 我的偏好是上述方法,但实际上取决于您的目标是什么。
protected void gv_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
HiddenField field = (HiddenField)gv.Rows[e.RowIndex].FindControl("myHiddenField");
string myValue = field.Value;
// delete it and rebind
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.