0

GridViewを使用してから行を削除する方法を教えてくださいLinkButton。Google で見つけたコードは、 databound を使用していますGridView。で選択した情報に応じて情報をバインドしていDropDownListます。ありがとう

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    string username;
    username = HttpContext.Current.User.Identity.Name;
    if (DropDownList1.SelectedValue.Equals("Expired"))
    {
        SqlConnection conn4 = new SqlConnection(My connection);
        SqlDataAdapter adapter;
        string mySQL2;
        mySQL2 = 
            "SELECT Title,MessageStatus From Table_Message WHERE Username ='" 
            + username 
            + "' AND MessageStatus = 'Expired' AND Method = 'Email'";
        adapter = new SqlDataAdapter(mySQL2, conn4);
        conn4.Open();

        DataSet ds3 = new DataSet();
        adapter.Fill(ds3);
        //Execute the sql command
        GridView1.DataSource = ds3;
        GridView1.DataBind();
        conn4.Close();

    }
    else if (DropDownList1.SelectedValue.Equals("Pending"))
    {
        SqlConnection conn3 = new SqlConnection(My connection);
        SqlDataAdapter adapter1;
        string mySQL;
        mySQL = 
            "SELECT Title,MessageStatus From Table_Message WHERE Username ='" 
            + username 
            + "' AND MessageStatus = 'Pending' AND Method = 'Email'";
        adapter1 = new SqlDataAdapter(mySQL, conn3);
        conn3.Open();

        DataSet ds2 = new DataSet();
        adapter1.Fill(ds2);
        //Execute the sql command
        GridView1.DataSource = ds2;
        GridView1.DataBind();
        conn3.Close();
    }
4

2 に答える 2

0

次の手順を実行できます

1)グリッドのDataKeyNamesをテーブルの主キーにマップします

2)LinkBut​​tonを次のように使用します

<asp:TemplateField HeaderText="Action">
                        <ItemTemplate>
<asp:ImageButton ID="imgBtnDelete" runat="server" ImageUrl="/_layouts/images/DELETE.GIF"
                            AlternateText="Delete" CommandName="DeleteUser" CausesValidation="false" ToolTip="Delete"/>
                        </ItemTemplate>

3)rowdataboundイベントでコマンド引数をバインドします

 protected void GvwUser_RowDataBound(object sender, GridViewRowEventArgs e)
    {

        ImageButton imgBtnDelete;


        if (e.Row.RowType == DataControlRowType.DataRow)
        {            
            imgBtnDelete = (ImageButton)e.Row.FindControl("imgBtnDelete");
            imgBtnDelete.CommandArgument = gvwUser.DataKeys[e.Row.RowIndex].Value.ToString();

        }
    }

4)背後のコードで実装を次のように記述します

protected void GvwUser_RowCommand(object sender, GridViewCommandEventArgs e)
    {
int userId = 0;
if (e.CommandName.Equals("DeleteUser"))
        {
            //get the user id
            userId = Convert.ToInt32(e.CommandArgument.ToString());

            //GetUser will delete the user
            if (DeleteUser(userId) > 0)
            {
             Page.ClientScript.RegisterStartupScript(this.GetType(), "Delete", "alert('User Deleted.');", true);
            }
}
于 2012-09-13T09:48:42.717 に答える
0

匿名ユーザーにリストへのアクセスを許可している場合:

これはオプションかもしれません:

  1. delete.aspx を作成します。
  2. クエリで主キー列をフェッチします (例: Id、UId ...)
  3. グリッド ビューで、DataKeyNames = "Id" を作成します。
  4. linkbutton の onclick イベントで、ユーザーを delete.aspx?Id='Your data id' にリダイレクトします。
  5. delete.aspx には、承認されたユーザーのみがアクセスできました。偶発的なデータ損失を防ぎます。
  6. delete.aspx に削除ボタンを配置すると、その一意の ID を持つレコードが onclick イベントで削除されます。
  7. これは、物事を安全に行う方法になる可能性があります。

ユーザーを承認するためだけにリストを表示する場合は、ajax を使用して削除コードを記述できます。

  • OnClientClick(): にリクエストを送信する JavaScript 関数を書きます: delete.aspx?Id='Id'、そこでレコードを削除します。
于 2012-09-13T07:12:47.697 に答える