2016-11-25 9 views
0

データリスト内のボタンを使用してセッションデータテーブルからデータを削除するにはどうすればよいですか?
データリスト内のボタンをクリックしてセッションデータテーブル行を削除するには

このコードは、データリスト

フロントエンドコード

<asp:DataList ID="DataList1" runat="server" Width="100%" HorizontalAlign="Center"> 
    <ItemStyle BorderStyle="Double" /> 
    <ItemTemplate> 
    <center> 
     <table class="table" style="border-style: dashed; top: 211px; left: 23px; height: auto; table-layout: fixed; width: 100%;"> 
     <tr> 
      <td> 
      <asp:Image ID="Pimg" runat="server" ImageUrl='<%# Eval("Pimg") %>' CssClass="img img-responsive" Height="140px" Width="240px" /> 
      </td> 
      <td> 
      <asp:Label ID="Pname" runat="server" Text='<%# Eval("Pname") %>'></asp:Label> 
      </td> 
      <td> 
      <asp:Label ID="Pqty" runat="server" Text='<%# Eval("Pqty") %>'></asp:Label> 
      </td> 
      <td> 
      <asp:Label ID="Price" runat="server" Text='<%# Eval("Price") %>'></asp:Label> 
      </td> 
      <td> 
      <asp:Button ID="bremove" runat="server" Text="Remove" OnClick="bremove_Click" /> 
      </td> 
     </tr> 
     </table> 
    </center> 
    </ItemTemplate> 
</asp:DataList> 

バックエンドコード

からその項目を削除するために使用されたショッピングカートとbremoveボタン内に追加の製品を表示することです
protected void bremove_Click(object sender, EventArgs e) 
    { 
     int index = DataList1.SelectedIndex; 
     DataTable dt = Session["AddToCard"] as DataTable; 
     dt.Rows[index].Delete(); 
     porductlist = dt; 
     BindData(); 
     Response.Redirect("Default.aspx"); 
    } 
public void BindData() 
    { 
     DataList1.DataSource = porductlist; 
     DataList1.DataBind(); 
    } 
+0

そして、あなたの質問ですか...? – VDWWD

+0

データリスト内のボタンをクリックすると、データテーブルから作成されたセッションからデータを削除できますか?セッションデータはDatalist内でバインドされています。データの単一行を削除したい –

答えて

0

AcceptChanges()

protected void bremove_Click(object sender, EventArgs e) 
{ 
    int index = DataList1.SelectedIndex; 
    DataTable dt = Session["AddToCard"] as DataTable; 

    dt.Rows[index].Delete(); 
    dt.AcceptChanges(); 

    DataList1.DataSource = dt; 
    DataList1.DataBind(); 

    porductlist = dt; 
    BindData(); 
    Response.Redirect("Default.aspx"); 
} 

しかし、あなたはBindData()を呼び出し、リダイレクト、リダイレクトは必要ありません。他のページに行きたい場合以外は、BindData()は必要ありません。

UPDATEは、正しい行番号を取得CommandClickないとボタンを使用し、CommandArgumentように行番号を送信します。

<asp:Button ID="bremove" runat="server" Text="Button" OnCommand="bremove_Command" CommandArgument='<%# Container.ItemIndex %>' /> 

protected void bremove_Command(object sender, CommandEventArgs e) 
{ 
    int index = Convert.ToInt32(e.CommandArgument); 
} 
+0

助けてくれてありがとう@vdwwd –

0

あなたのボタンにカスタム属性(あなたのDB-エントリの例えばID)を追加します。

<asp:Button ID="bremove" runat="server" Text="Remove" OnClick="bremove_Click" entry-id='<%# Eval("ID") %>' /> 

をその後、分離コードであなたが属性を読み出すことができます。

protected void bremove_Click(object sender, EventArgs e) 
{ 
     string id = ((Button)sender).Attributes["data-id"]; 
     // .. your code .. 
} 
+0

ありがとう@ user1519979あなたのステップを試しましたが、Datatableの0の位置の行にあるデータを削除します –

0

再割り当てしてくださいdtをセッション変数に更新してセッション値を更新します。

protected void bremove_Click(object sender, EventArgs e) 
 
    { 
 
     int index = DataList1.SelectedIndex; 
 
     DataTable dt = Session["AddToCard"] as DataTable; 
 
     dt.Rows[index].Delete(); 
 
     porductlist = dt; 
 
     Session["AddToCard"]= dt 
 
     BindData(); 
 
     Response.Redirect("Default.aspx"); 
 
    } 
 
public void BindData() 
 
    { 
 
     DataList1.DataSource = porductlist; 
 
     DataList1.DataBind(); 
 
    }

関連する問題