Как создать пользовательскую кнопку удаления и редактирования в gridview с помощью ASP.NET пт. 2?
Наконец я смог создать пользовательскую кнопку удаления и редактирования для своего gridview. Но я заметил две проблемы в моем gridview. Надеюсь, вы, ребята, поможете мне в этом деле. Кроме того, это только для практики. В ближайшее время я внедрю лучшую безопасность на своем сайте.
Проблема 1: Когда я нажимаю кнопку Удалить в первый раз, она просто обновляет страницу и ничего не делает. Но когда я нажимаю на него во второй раз, он работает идеально. Почему кнопка Удалить не работает и просто обновляет страницу при первом нажатии, а затем работает во второй раз?
Задача 2:Когда я нажимаю кнопку редактирования в первый раз, она работает нормально. Затем я могу обновить / изменить базу данных. Допустим, я хочу изменить имя «Дин» под идентификатором «7» на «Джексон». Поэтому я просто изменил его в текстовом поле и нажал кнопку обновления. Но веб-сайт просто обновляется снова, а имя «Дин» все еще находится в текстовом поле (кстати, оно все еще находится в режиме обновления / отмены). Так что мне нужно снова ввести «Джексон» в текстовое поле и второй раз нажать кнопку обновления. На этот раз он работает, и он обновил мою сетку. Подобно проблеме 1, почему кнопка обновления не работает и просто обновляет страницу при первом нажатии и работает во второй раз?
Что я уже пробовал:
Вот код aspx:
<h3>Guitar Brands Data:</h3> <div style="overflow:auto; width:1100px; max-height:500px;"> <asp:GridView ID="GuitarBrandsGridView" runat="server" CssClass="mydatagrid" PagerStyle-CssClass="pager" HeaderStyle-CssClass="header" RowStyle-CssClass="rows" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="SqlDataSource0" OnRowDataBound="GuitarBrandsGridView_RowDataBound" OnRowCancelingEdit="GuitarBrandsGridView_RowCancelingEdit" OnRowEditing="GuitarBrandsGridView_RowEditing" OnRowUpdating="GuitarBrandsGridView_RowUpdating" OnRowDeleting="GuitarBrandsGridView_RowDeleting" Width="864px" Height="250px"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:Button ID="GuitarBrandsGridViewBtnDelete" runat="server" CommandName="Delete" Text="Delete"/> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <ItemTemplate> <asp:Button ID="GuitarBrandsGridViewBtnEdit" runat="server" CommandName="Edit" Text="Edit"/> </ItemTemplate> <EditItemTemplate> <asp:Button ID="GuitarBrandsGridViewBtnUpdate" runat="server" CommandName="Update" Text="Update"/> <asp:Button ID="GuitarBrandsGridViewBtnCancel" runat="server" CommandName="Cancel" Text="Cancel"/> </EditItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="id" SortExpression="id"> <EditItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label2" runat="server" Text='<%# Bind("id") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="type" SortExpression="type"> <EditItemTemplate> <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("type") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label3" runat="server" Text='<%# Bind("type") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="name" SortExpression="name"> <EditItemTemplate> <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("name") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label4" runat="server" Text='<%# Bind("name") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="image" SortExpression="image"> <EditItemTemplate> <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("image") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label5" runat="server" Text='<%# Bind("image") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> <HeaderStyle CssClass="header"></HeaderStyle> <PagerStyle CssClass="pager"></PagerStyle> <RowStyle CssClass="rows"></RowStyle> </asp:GridView>
Здесь это реализовано.CS коде :
protected void Page_Load(object sender, EventArgs e) { BindGridViewDataList.GetItemsLoad(); } //Start of Gridview Code for Guitar Brands private void bindgridviewguitarbrands() { con1.Open(); cmd1.CommandText = "SELECT * FROM [guitarBrands]"; cmd1.Connection = con1; SqlDataAdapter da1 = new SqlDataAdapter(cmd1); da1.Fill(ds1); con1.Close(); GuitarBrandsGridView.DataBind(); } protected void GuitarBrandsGridView_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { string name = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "Name")); Button button = (Button)e.Row.FindControl("GuitarBrandsGridViewBtnDelete"); button.Attributes.Add("onclick", "JavaScript:return ConfirmationBox('" + name + "' )"); } } protected void GuitarBrandsGridView_RowDeleting(object sender, GridViewDeleteEventArgs e) { int id = Convert.ToInt32(GuitarBrandsGridView.DataKeys[e.RowIndex].Value.ToString()); Label name = (Label)GuitarBrandsGridView.Rows[e.RowIndex].FindControl("Label4"); con1.Open(); cmd1.CommandText = "DELETE FROM [guitarBrands] WHERE id=" + id; cmd1.Connection = con1; int a = cmd1.ExecuteNonQuery(); con1.Close(); if (a > 0) { bindgridviewguitarbrands(); } RemoveCodeToGuitarFile.RemoveAddGuitarClass(name.Text); RemoveCodeToGuitarFile.RemoveConnectionClassGuitarItems(name.Text); RemoveCodeToGuitarFile.RemoveOverviewGuitarDataASPX(name.Text); RemoveCodeToGuitarFile.RemoveOverviewGuitarDataCode(name.Text); File.Delete(@"C:\Users\User1\Documents\Visual Studio 2015\WebSites\MusicStore\Pages\GuitarItems" + id + ".aspx"); File.Delete(@"C:\Users\User1\Documents\Visual Studio 2015\WebSites\MusicStore\Pages\GuitarItems" + id + ".aspx.cs"); ConnectionClassGuitarBrands.RemoveGuitarBrandsDatabase(name.Text); } protected void GuitarBrandsGridView_RowEditing(object sender, GridViewEditEventArgs e) { string id = GuitarBrandsGridView.DataKeys[e.NewEditIndex].Value.ToString(); Label name = (Label)GuitarBrandsGridView.Rows[e.NewEditIndex].FindControl("Label4"); RemoveCodeToGuitarFile.RemoveAddGuitarClass(name.Text); RemoveCodeToGuitarFile.RemoveConnectionClassGuitarItems(name.Text); RemoveCodeToGuitarFile.RemoveOverviewGuitarDataASPX(name.Text); RemoveCodeToGuitarFile.RemoveOverviewGuitarDataCode(name.Text); File.Delete(@"C:\Users\User1\Documents\Visual Studio 2015\WebSites\MusicStore\Pages\GuitarItems" + id + ".aspx"); File.Delete(@"C:\Users\User1\Documents\Visual Studio 2015\WebSites\MusicStore\Pages\GuitarItems" + id + ".aspx.cs"); ConnectionClassGuitarBrands.RemoveGuitarBrandsDatabase(name.Text); GuitarBrandsGridView.EditIndex = e.NewEditIndex; bindgridviewguitarbrands(); } // row update event protected void GuitarBrandsGridView_RowUpdating(object sender, GridViewUpdateEventArgs e) { string id = GuitarBrandsGridView.DataKeys[e.RowIndex].Value.ToString(); TextBox type = (TextBox)GuitarBrandsGridView.Rows[e.RowIndex].FindControl("TextBox1"); TextBox name = (TextBox)GuitarBrandsGridView.Rows[e.RowIndex].FindControl("TextBox2"); TextBox image = (TextBox)GuitarBrandsGridView.Rows[e.RowIndex].FindControl("TextBox3"); cmd1 = new SqlCommand("UPDATE [guitarBrands] SET Type = '" + type + "', Name = '" + name + "', Image = '" + image + "' WHERE ID = " + id, con1); con1.Open(); cmd1.ExecuteNonQuery(); con1.Close(); int ID = Convert.ToInt32(id); ConnectionClassGuitarBrands.CreateGuitarBrandsDatabase(name.Text); AddCodeToGuitarFile.AddGuitarClassCode(name.Text, ID); AddCodeToGuitarFile.AddConnectionClassGuitarItems(name.Text); AddCodeToGuitarFile.AddOverviewGuitarDataASPX(name.Text, ID); AddCodeToGuitarFile.AddOverviewGuitarDataASPXCode(name.Text); AddASPXAndCSFileForGuitarBrands.AddFile(name.Text, ID); GuitarBrandsGridView.EditIndex = -1; bindgridviewguitarbrands(); } // cancel row edit event protected void GuitarBrandsGridView_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { string id = GuitarBrandsGridView.DataKeys[e.RowIndex].Value.ToString(); TextBox name = (TextBox)GuitarBrandsGridView.Rows[e.RowIndex].FindControl("TextBox2"); int ID = Convert.ToInt32(id); ConnectionClassGuitarBrands.CreateGuitarBrandsDatabase(name.Text); AddCodeToGuitarFile.AddGuitarClassCode(name.Text, ID); AddCodeToGuitarFile.AddConnectionClassGuitarItems(name.Text); AddCodeToGuitarFile.AddOverviewGuitarDataASPX(name.Text, ID); AddCodeToGuitarFile.AddOverviewGuitarDataASPXCode(name.Text); AddASPXAndCSFileForGuitarBrands.AddFile(name.Text,ID); GuitarBrandsGridView.EditIndex = -1; bindgridviewguitarbrands(); } //End of Gridview Code for Guitar Brands