从gridview删除选定的行不再有效? [英] Deleting selected row from gridview no longer works?
问题描述
大家好。
我当前删除代码用于在Gridview表中工作但在我将其填入UpdatePanel后不再使用。
基本上,用户将选中一行或多行带复选框,然后单击按钮将删除所选行。
这是我的aspx代码;
Hello everyone.
My current delete code used to work in a Gridview table but no longer, after I stuffed it into an UpdatePanel.
Basically, users will select one or multiple rows with a checkbox and then the selected rows will be deleted upon clicking a button.
This is my aspx code;
<asp:UpdatePanel ID="upl" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSearch" EventName="serverclick" />
<asp:AsyncPostBackTrigger ControlID="GvGrade" />
</Triggers>
<ContentTemplate>
<asp:GridView ID="GvGrade" runat="server" AutoGenerateColumns="false" ClientIDMode="Static">
<Columns>
<asp:TemplateField HeaderText="Task ID" HeaderStyle-HorizontalAlign="Center">
<HeaderStyle Width="100" BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:Label ID="lblID" CssClass="lblID" runat="server" Text='<%# Eval("drug_id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<Columns>
<asp:TemplateField HeaderText="Drug Name" HeaderStyle-HorizontalAlign="Center">
<HeaderStyle Width="300" BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:Label ID="lblDrugName" CssClass="lblImageName" runat="server" Text='<%# Eval("drug_name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<Columns>
<asp:TemplateField HeaderText="Drug Description" HeaderStyle-HorizontalAlign="Center">
<HeaderStyle Width="500" BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:Label ID="lblDrugDescription" CssClass="lblImage" runat="server" Text='<%# Eval("drug_description") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<Columns>
<asp:TemplateField HeaderText="Task Status" HeaderStyle-HorizontalAlign="Center">
<HeaderStyle Width="200" BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:Label ID="lblTaskStatus" CssClass="lblImage" runat="server" Text='<%# Eval("task_status") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<Columns>
<asp:TemplateField HeaderText="Task Type" HeaderStyle-HorizontalAlign="Center">
<HeaderStyle Width="100" BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:Label ID="lblTaskType" CssClass="lblImage" runat="server" Text='<%# Eval("task_type") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<Columns>
<asp:TemplateField HeaderText="Delete Tasks" ItemStyle-Width="100px" ItemStyle-HorizontalAlign="Center">
<HeaderStyle Width="100" BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:CheckBox ID="chkbox" runat="server" onclick="javascript:HighlightRow(this);" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
和代码隐藏;
And the code-behind;
protected void showData()
{
SqlDataAdapter da = new SqlDataAdapter("select * from Drug", con);
DataSet ds = new DataSet();
da.Fill(ds);
GvGrade.DataSource = ds;
GvGrade.DataBind();
}
protected void DeleteRecord(string drug_name)
{
SqlConnection con = new SqlConnection(cs);
SqlCommand com = new SqlCommand("delete from Drug where drug_name=@ID", con);
com.Parameters.AddWithValue("@ID", drug_name);
con.Open();
com.ExecuteNonQuery();
con.Close();
}
protected void BtnLogin_Click(object sender, EventArgs e)
{
foreach (GridViewRow grow in GvGrade.Rows)
{
CheckBox chkbox = (CheckBox)grow.FindControl("chkbox");
if (chkbox.Checked)
{
string drug_name = grow.Cells[1].Text;
DeleteRecord(drug_name);
}
}
//Displaying the Data in GridView
showData();
}
我尝试过:
我已经用Google搜索了一些关于按钮回发后重新绑定表格的内容,但我不认为这是问题所在。我也尝试使用upl.Update更新代码隐藏中的面板,但它仍然无法正常工作。这里发生了什么?
What I have tried:
I had googled around and read something about re-binding the table after button postback but I don't think that is the issue. I have also tried updating the panel in the code-behind with upl.Update but it still doesn't work. What is happening here?
推荐答案
已修复。
好像我的代码背后的DeleteRecord只是不喜欢TemplateField而更喜欢BoundField。
Fixed.
Seems like my code behind for "DeleteRecord" just dislikes "TemplateField" and prefers "BoundField".
这篇关于从gridview删除选定的行不再有效?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!