Я кодировал свой проект, над которым я сейчас работаю, и мне нужно было
- Добавить курсы и пакет к курсам
- Удалить курсы по запросу
с использованием gridview для того же.
Я использую событие OnRowCommand, удаление работает нормально, запись тоже удаляется из базы данных, но по какой-то причине выдается эта ошибка:
"GridView 'gvCourses' вызвало событие RowDeleting, которое не было обработано."
Примечание: - Я не использую 'OnRowDeleting' в файле aspx.
Вот странная вещь , которую я, как новичок, не понимаю.Ошибка больше не появляется, когда я генерирую событие OnRowDeleting и оставляю событие пустым в коде позади (0 строк кода в обработчике события).
Нужно узнать и понять, почему это происходит,Любая помощь будет принята с благодарностью.
.aspx код:
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:Panel ID="Panel2" runat="server">
<table style="width:100%;">
<tr>
<td style="width:210px">
</td>
<td>
</td>
</tr>
<tr>
<td style="width:210px"> </td>
<td> </td>
</tr>
<tr>
<td style="width:210px; height: 331px;"></td>
<td style="height: 331px">
<asp:GridView ID="gvCourses" runat="server"
AutoGenerateColumns="False"
CssClass="table-hover table"
GridLines="None" Width="800px"
ShowFooter="True"
OnRowCommand="gvCourses_RowCommand" >
<Columns>
<asp:BoundField DataField="course"
HeaderText="Courses in Valsura"
SortExpression="DateField" />
<asp:TemplateField>
<FooterTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem>Select</asp:ListItem>
<asp:ListItem>Students</asp:ListItem>
<asp:ListItem>Teachers</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="Button1" runat="server"
OnClick="Button1_Click"
Text="Add Course"
CssClass="btn-danger" />
</FooterTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton2"
runat="server">View Batches</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton3"
runat="server"
CommandName="delete"
CommandArgument='<%#Eval ("course") %>'>Delete</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:RequiredFieldValidator ID="rfvCourse"
ControlToValidate="DropDownList1"
InitialValue="Select"
ErrorMessage="Select*"
ForeColor="Red" >
</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td style="width: 180px; height: 22px;"></td>
<td style="height: 22px"></td>
<td style="height: 22px"></td>
</tr>
<tr>
<td style="width: 180px"> </td>
<td> </td>
<td> </td>
</tr>
</table>
</asp:Panel>
</asp:Content>
.aspx.cs код: (код, включая только обязательные)
protected void gvCourses_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "delete")
{
SqlConnection con =
new SqlConnection(ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString);
DataTable dt = new DataTable();
string query =
"delete from tblCourses where course='"+e.CommandArgument.ToString()+"'";
SqlCommand cmd = new SqlCommand(query, con);
con.Open();
int n = cmd.ExecuteNonQuery();
con.Close();
gvCourses.DataSource = dt;
gvCourses.DataBind();
ViewState["query"] = "select course from tblCourses";
bindgrid();
}
protected void bindgrid()
{
SqlConnection con =
new SqlConnection(ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString);
DataTable dt = new DataTable();
using (SqlDataAdapter sda = new SqlDataAdapter(ViewState["query"].ToString(), con))
{
sda.Fill(dt);
}
gvCourses.DataSource = dt;
gvCourses.DataBind();
}
Страница выглядит следующим образом (партии еще не были закодированы).