Удаление строк работает в Gridview с использованием поля шаблона, но выдается ошибка - PullRequest
0 голосов
/ 07 июня 2018

Я кодировал свой проект, над которым я сейчас работаю, и мне нужно было

  1. Добавить курсы и пакет к курсам
  2. Удалить курсы по запросу

с использованием 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">
                    &nbsp;</td>
                <td>
                    &nbsp;</td>
            </tr>
            <tr>
                <td style="width:210px">&nbsp;</td>
                <td>&nbsp;</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">&nbsp;</td>
                <td>&nbsp;</td>
                <td>&nbsp;</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();
    }

Страница выглядит следующим образом (партии еще не были закодированы).

Page looks like this(batches haven't been coded yet)

1 Ответ

0 голосов
/ 07 июня 2018

Кажется, что существует некоторый встроенный код вида сетки, который создается и срабатывает, когда командная кнопка называется Delete.В соответствии с , , , и , вы можете просто изменить имя с Delete на любое другое.В противном случае добавьте пустой обработчик событий.

Кстати, DataSet s имеют встроенную функциональность CRUD, и с ними может быть проще в работе, но некоторым людям не нравятся накладные расходы.

...