Подтверждение для buttonfeild
Привет всем,
Я сталкиваюсь с проблемой в подтверждении Subfor ButtonField в gridview (это моя главная проблема).
Раньше я использовал templatefield в gridview для каждой строки & для подтверждения я использую "onclientclick" & это очень хорошо работает, потому что пользователь не может сделайте любое событие, если он не нажал кнопку ОК или отменить, другими словами, это требуется.
Теперь у меня есть girdview & мне нужно было использовать свойство rowspan & это не сработает, если я преобразовал столбец в шаблон.
Мой GridView в столбцы: Exp_ID, эксперимент, требования, элемент, количество, ubdate_button &амп; delete_button.
Любой эксперимент имеет много элементов & любой элемент должен иметь количество, поэтому я сделал rowspan для Exp_Id, Experiment & кнопки, потому что я буду редактировать или удалять 1 эксперимент.
Моя проблема была в rowspan & я решил с помощью BoundField & ButtonField (без преобразования в templatefield), и это позволило мне сделать это.
По строкам.Ячейки(row_number).text я могу получить Exp_ID(PK) для редактирования.
Но моя текущая проблема заключается в удалении эксперимента с подтверждением
У меня есть 50% решения с помощью MsgBox, но проблема в том, что предотвращать пользователь может сделать любое событие, кроме 2 вариантов подтверждения ok или отмена (пользователь может сделать любое событие без выбора параметров MsgBox)
Я не мог использовать onclientclick ибо ButtonField не имеет публичного свойства под названием "onclientclick"
В особенности строения solutios являются:
1-Включение использования rowspan для templatefield.
2-запретить пользователю делать какие-либо события, кроме вариантов подтверждения
Я надеюсь, что проблема хорошо описана
Пожалуйста, найдите код позади для rowsspan & исходный код для gridview
исходный код gridview:
<asp:GridView ID="gv_exp" runat="server" AutoGenerateColumns="False" CssClass="mGrid" Width="45%" EmptyDataText="no data found" BorderWidth="1px"> <AlternatingRowStyle BackColor="#DCDCDC" /> <Columns> <asp:BoundField DataField="Exp_ID" HeaderText="ID" ItemStyle-BorderWidth="1px" ItemStyle-BorderColor="Black" > <ItemStyle BorderColor="Black" BorderWidth="1px" /> </asp:BoundField> <asp:BoundField DataField="Exp_Name" HeaderText="Experiment" ItemStyle-BorderWidth="1px" ItemStyle-BorderColor="Black" > <ItemStyle BorderColor="Black" BorderWidth="1px" /> </asp:BoundField> <asp:BoundField DataField="element_id" HeaderText="Element ID" ItemStyle-BorderWidth="1px" ItemStyle-BorderColor="Black" > <ItemStyle BorderColor="Black" BorderWidth="1px" /> </asp:BoundField> <asp:BoundField DataField="element_name" HeaderText="Element" ItemStyle-BorderWidth="1px" ItemStyle-BorderColor="Black" > <ItemStyle BorderColor="Black" BorderWidth="1px" /> </asp:BoundField> <asp:BoundField DataField="quantity" HeaderText="Quantity" ItemStyle-BorderWidth="1px" ItemStyle-BorderColor="Black" > <ItemStyle BorderColor="Black" BorderWidth="1px" /> </asp:BoundField> <asp:ButtonField Text="ubtn" ButtonType="Image" ImageUrl="images/b_edit.png" CommandName="u123" ItemStyle-BorderWidth="1px" ItemStyle-BorderColor="Black" > <ItemStyle BorderColor="Black" BorderWidth="1px" /> </asp:ButtonField> <asp:ButtonField Text="dbtn" ButtonType="Image" ImageUrl="images/Delete.gif" CommandName="d123" ItemStyle-BorderWidth="1px" ItemStyle-BorderColor="Black" > <ItemStyle BorderColor="Black" BorderWidth="1px" /> </asp:ButtonField> </Columns> </asp:GridView>
Что я уже пробовал:
Код позади для кнопок operatios(MsgBox в качестве комментария)
Protected Sub gv_exp_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles gv_exp.RowCommand Dim rowindex As Integer = Convert.ToInt32(e.CommandArgument) Dim row As GridViewRow = gv_exp.Rows(rowindex) If e.CommandName = "u123" Then lbmsg.Text = "" tr_add_new.Visible = True tr_add_new_table.Visible = True tr_cancel.Visible = True insert.Visible = False clear.Visible = False update.Visible = True exp_id = row.Cells(0).Text gv_eles_items(exp_id, "n") dt_gv_eles = userr.get_elements(exp_id, "y") If dt_gv_eles.PrimaryKey.Length = 0 Then dt_gv_eles.PrimaryKey = New DataColumn() {dt_gv_eles.Columns("ID")} End If i_gv_eles.DataSource = dt_gv_eles i_gv_eles.DataBind() i_exp_txt.Text = row.Cells(1).Text i_ele_quan.Text = "" ElseIf e.CommandName = "d123" Then tr_add_new_table.Visible = False tr_cancel.Visible = False tr_add_new.Visible = True ClientScript.RegisterStartupScript(Me.[GetType](), "alert", "alert('You clicked YES!')", True) 'Dim a = MsgBox("Are you sure you want to delete selected experiment", MsgBoxStyle.OkCancel, "") 'If a = MsgBoxResult.Ok Then ' operation = "Delete" ' i = userr.delete_experiment(row.Cells(0).Text, userid, role, operation, object1) ' If i = -1 Then ' lbmsg.Text = "there is mistake" ' Else ' lbmsg.Text = "experiment deleted successfully" ' gvdata() ' End If 'Else 'End If End If End Sub
код для атрибута rowspan
Protected Sub gv_exp_DataBound(sender As Object, e As EventArgs) Handles gv_exp.DataBound For i As Integer = gv_exp.Rows.Count - 1 To 1 Step -1 Dim row As GridViewRow = gv_exp.Rows(i) Dim previousRow As GridViewRow = gv_exp.Rows(i - 1) If row.Cells(1).Text = previousRow.Cells(1).Text Then If previousRow.Cells(1).RowSpan = 0 Then If row.Cells(1).RowSpan = 0 Then previousRow.Cells(1).RowSpan += 2 previousRow.Cells(0).RowSpan += 2 previousRow.Cells(5).RowSpan += 2 previousRow.Cells(6).RowSpan += 2 Else previousRow.Cells(1).RowSpan = row.Cells(1).RowSpan + 1 previousRow.Cells(0).RowSpan = row.Cells(1).RowSpan + 1 previousRow.Cells(5).RowSpan = row.Cells(5).RowSpan + 1 previousRow.Cells(6).RowSpan = row.Cells(6).RowSpan + 1 End If row.Cells(1).Visible = False row.Cells(0).Visible = False row.Cells(5).Visible = False row.Cells(6).Visible = False End If End If Next End Sub