2011-05-18 40 views
-1

我有一個只有標題字段的表。由於不需要,我沒有在此表中使用ID字段。 現在我的頭版我有一個顯示標題的網格視圖,並且有一個列項目模板複選框。 我想刪除所有選中的複選框值,並在那裏刪除特定的行。 如何做到這一點。? 任何人都可以建議我說... 在此先感謝... 我在做什麼..如何刪除所有選中的複選框值和那裏的特定行?

private void GetData() 
    { 
     grdlistWord. 
     ArrayList arr; 
     if (ViewState["TotalRecords"] != null) 
     { 
      arr = (ArrayList)ViewState["TotalRecords"]; 
     } 
     else 
     { 
      arr = new ArrayList(); 
     } 
     for (int i = 0; i < grdlistWord.Rows.Count; i++) 
     { 

      CheckBox chk = (CheckBox)grdlistWord.Rows[i].Cells[0].FindControl("chkWord"); 
      if (chk.Checked) 
      { 
       if (!arr.Contains(grdlistWord.DataKeys[i].Value)) 
       { 
        arr.Add(grdlistWord.DataKeys[i].Value); 
       } 
      } 
      else 
      { 
       if (arr.Contains(grdlistWord.DataKeys[i].Value)) 
       { 
        arr.Remove(grdlistWord.DataKeys[i].Value); 
       } 
      } 
      //} 
     } 
     ViewState["TotalRecords"] = arr; 
    } 

    protected void lnkbtnDelete_Click(object sender, EventArgs e) 
    { 
     { 
      try 
      { 
       int count = 0; 
       //SetData(); 
       //gvAll.AllowPaging = false; 
       //gvAll.DataBind(); 
       ArrayList arr = (ArrayList)ViewState["TotalRecords"]; 
       count = arr.Count; 
       for (int i = 0; i < grdlistWord.Rows.Count; i++) 
       { 
        //string a = grdlistWord.Rows.Count.ToString(); 
        //Response.Write(a.ToString()); 
        if (arr.Contains(grdlistWord.DataKeys[i].Value)) 
        { 

         DeleteRecord(grdlistWord.DataKeys[i].Value.ToString()); 
         arr.Remove(grdlistWord.DataKeys[i].Value); 
        } 
       } 
       ViewState["TotalRecords"] = arr; 
       //hfCount.Value = "0"; 
       //gvAll.AllowPaging = true; 
       GridBind(); 
       //ShowMessage(count); 
      } 
      catch (SqlException ex) 
      { 
       ex.ToString(); 
      } 
     } 
    } 


    private void DeleteRecord(string word) 
    { 

     string query = "delete from searchword where [email protected]"; 

     SqlCommand cmd = new SqlCommand(query, con); 
     cmd.Parameters.AddWithValue("@word", word); 
     con.Open(); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
    } 

HTML代碼:

字:
<fieldset> 
     <legend>List</legend> 
     <asp:GridView ID="grdlistWord" runat="server" DataKeyNames="word" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" AllowPaging="True" OnRowDataBound="grdlistWord_RowDataBound" OnRowDeleting="grdlistWord_RowDeleting" Width="456px" > 
      <Columns> 
       <asp:TemplateField> 
        <ItemTemplate> 
         <asp:CheckBox ID="chkWord" runat="server" onclick="check_click(this);" OnCheckedChanged="chkWord_CheckedChanged" /> 

        </ItemTemplate> 
        <HeaderTemplate> 
         <asp:CheckBox ID="chkAll" runat="server" onclick="checkAll(this);" /> 
         <asp:LinkButton ID="lnkbtnDelete" runat="server" Text="Delete" OnClick="lnkbtnDelete_Click" ForeColor="white"></asp:LinkButton> 
        </HeaderTemplate> 
       </asp:TemplateField> 
       <asp:BoundField DataField="Word" HeaderText="Word" /> 
       <asp:HyperLinkField HeaderText="Edit" Text="edit" DataNavigateUrlFields="Word" DataNavigateUrlFormatString="SearchWord.aspx?words={0}&amp;mode=Edit" /> 
       <asp:CommandField ShowDeleteButton="True" HeaderText="Delete" /> 
      </Columns> 
      <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
      <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> 
      <EditRowStyle BackColor="#999999" /> 
      <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> 
      <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> 
      <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
      <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
      <EmptyDataTemplate>Records not exist!</EmptyDataTemplate> 
     </asp:GridView> 
     <asp:HiddenField ID="hfCount" runat="server" Value = "0" /> 

    </fieldset> 
+0

[LMGTFY](http://tinyurl.com/3u4loqq) – Tr1stan 2011-05-18 11:11:11

+0

@ Tr1stan我不想用id做。你可以告訴,而不使用ID – divya 2011-05-18 11:22:52

+0

@divya:好的,那麼你用什麼來唯一標識行?名稱?看到你的代碼真的有幫助。 – Tr1stan 2011-05-18 11:29:56

回答

1

This page看起來像它有一個答案給你 - 很難說,儘管你在問題中提供的信息有限。

+0

現在我已經給出了完整的代碼。 – divya 2011-05-18 11:48:29

0

您將需要處理CheckBox的CheckedChanged事件並檢索該行中相應的標題值。然後編寫SQL代碼以刪除標題等於該標題值的表中的所有行。使用ExecuteNonQuery和SqlCommand對象來運行此語句並執行刪除操作。

+0

我不想刪除選中的已更改事件上的行。我想刪除按鈕單擊事件上的選定記錄。 – divya 2011-05-18 11:43:18

相關問題