如何从gridView中获取未选中的值

本文关键字:获取 gridView | 更新日期: 2023-09-27 18:17:01

我需要能够从GridView中删除记录,但为了这样做,我需要在.cs文件上添加一个方法。问题是,我有其他表,有一个列车的ID与它相关联,所以我需要显示一个错误消息,如果删除命令失败。我的问题是,我只能删除记录时,该记录被选中。(GridView2。 SelectedDataKey )。我希望能够在未选中时删除它

像是GriView2。Datakey……

aspx页面:

<LinkButton ID="LinkButton3" runat="server" CausesValidation="False" 
CommandName="" Text="DELETE" OnClick ="del" >

cs代码:

protected void del(object sender, EventArgs e)
{
    string DeleteSql = "DELETE FROM [Trains] WHERE [ID_Train] = @ID_Train";
    SqlCommand com = new SqlCommand(DeleteSql, Connection);
    String key = GridView2.SelectedDataKey["ID_Train"].ToString();
        try
        {
            com.Parameters.AddWithValue("@ID_Train", key);
            cn.Open();
            com.ExecuteNonQuery();
            cn.Close();
            Response.Redirect("Trains.aspx");
        }
        catch (Exception)
        {
            Label5.Text = "Error";
            Label5.Visible = true;
        }
}

如何从gridView中获取未选中的值

假设您有一个类似的模板结构:

<asp:TemplateField ShowHeader="False">
    <ItemTemplate>
      <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete" Text="Delete"></asp:LinkButton>
    </ItemTemplate>
</asp:TemplateField>

并且您在SqlDataSource中有一个Delete命令,您可以像这样处理删除命令并访问RowCommand事件中的数据键(注意,我将此从VB转换为c#,因此c#可能会关闭,但您明白这个想法):

private void GridView1_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e) Handles GridView1.RowCommand
{
    if( e.CommandName == "Delete" ) {
        string TrainID  = GridView1.DataKeys(e.Row.RowIndex).Values("ID_Train");
        integer rc = 0;
        GridView1.DeleteParameters.Clear();
        GridView1.DeleteParameters.Add("Train_ID", TrainId);   // Adjust as necessary
        try{
            rc = GridView1.Delete();
            if( rc == 1) {
               // Deleted
            } else {
               // Not Deleted
            }
        }
        catch() {
            Label5.Text = "Error";
            Label5.Visible = true;
        }
    }
}