我有一個只有標題字段的表。由於不需要,我沒有在此表中使用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}&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>
[LMGTFY](http://tinyurl.com/3u4loqq) – Tr1stan 2011-05-18 11:11:11
@ Tr1stan我不想用id做。你可以告訴,而不使用ID – divya 2011-05-18 11:22:52
@divya:好的,那麼你用什麼來唯一標識行?名稱?看到你的代碼真的有幫助。 – Tr1stan 2011-05-18 11:29:56