У меня есть вид сетки с 2 столбцами, один для текстового поля, а другой для значка редактирования.Если я нажму на иконку редактирования, откроется текстовое поле для редактирования, а во втором столбце будет иконка обновления и иконка отмены.Также над окном сетки находится текстовое поле поиска, позволяющее пользователю выполнять поиск нужной строки.
Первый сценарий: когда у меня есть, например, 5 строк, и щелкните значок редактирования в любой строке, этооткроет окно редактирования, и я смогу редактировать.
Второй сценарий: когда я наберу текст в поле поиска и нажму на кнопку поиска, он найдет соответствующую строку и отобразит ее в виде сеткив одиночестве.
Проблема в Когда я нажимаю на иконку редактирования для этой строки (результат поиска), она показывает: Событие GowView, вызванное RowEditing, которое не было обработано
Это мой обзор:
<asp:GridView ID="PSGridView" runat="server" AutoGenerateColumns="False" DataKeyNames="StatusID" DataSourceID="PSSqlDataSource" ShowFooter="True" BorderStyle="None" BorderWidth="1px" Width="100%" ShowHeaderWhenEmpty="True" EmptyDataText="No protocal status."
AllowPaging="true" PageSize="10" CssClass="table table-bordered table-striped table-condensed mb-none" AllowSorting="True" OnRowCommand="PSGridView_RowCommand">
<Columns>
<%--RP col--%>
<asp:TemplateField HeaderText="Protocol Status" HeaderStyle-CssClass="caption font-green" HeaderStyle-Width="90%">
<EditItemTemplate>
<asp:TextBox ID="PSBind" runat="server" Text='<%# Bind("Des") %>' Width="100%" CssClass="form-control"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="PSLabel" runat="server" Text='<%# Bind("Des") %>' Width="100%"></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="PS" runat="server" Width="100%" CssClass="form-control"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<%--Action col--%>
<asp:TemplateField HeaderText="Actions" HeaderStyle-CssClass="caption font-green" HeaderStyle-Width="10%">
<ItemTemplate>
<asp:LinkButton ID="btnEdit" runat="server" CommandName="Edit" Text="Edit" ToolTip="Edit">
<i class="fa fa-lg fa-pencil"></i></asp:LinkButton>
<%--<asp:LinkButton ID="btnDelete" runat="server" CausesValidation="false" CommandArgument="<%# Container.DataItemIndex %>" CommandName="DeletePS" OnClientClick="return FinalDeleteConfirm(this, event);" Text="Delete" ToolTip="Delete">--%>
<asp:LinkButton ID="btnDelete" runat="server" CausesValidation="false" CommandArgument="<%# Container.DataItemIndex %>" CommandName="DeletePS" OnClientClick="DeleteConfirm()" Text="Delete" ToolTip="Delete">
<i class="fa fa-lg fa-trash-o" style="color:red;"></i></asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="btnUpdate" runat="server" CommandName="UpdatePS" CommandArgument="<%# Container.DataItemIndex %>" Text="Update" ToolTip="Confirm">
<i class="fa fa-lg fa-check" style="color:green"></i></asp:LinkButton>
<asp:LinkButton ID="btnCancel" runat="server" CommandName="Cancel" Text="Cancel" ToolTip="Cancel">
<i class="fa fa-lg fa-times" style="color:red"></i></asp:LinkButton>
</EditItemTemplate>
<FooterTemplate>
<button id="btnAdd" class="btn btn-primary btn-circle" type="button" runat="server" onserverclick="btnAdd_Click">
<i class="fa fa-plus"></i>
Add Protocol Status
</button>
</FooterTemplate>
</asp:TemplateField>
</Columns>
<PagerStyle CssClass="pagination-marwa" />
<SortedAscendingCellStyle BackColor="#FFFDE7" />
<SortedAscendingHeaderStyle BackColor="#FFF9C4" />
<SortedDescendingCellStyle BackColor="#FFFDE7" />
<SortedDescendingHeaderStyle BackColor="#FFF9C4" />
</asp:GridView>
<asp:SqlDataSource ID="PSSqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ProtocolConnectionString %>" SelectCommand="ProtocolStatus_Select" DeleteCommand="ProtocolStatus_Delete" InsertCommand="ProtocolStatus_Insert" UpdateCommand="ProtocolStatus_Update"
DeleteCommandType="StoredProcedure" InsertCommandType="StoredProcedure" SelectCommandType="StoredProcedure" UpdateCommandType="StoredProcedure">
<DeleteParameters>
<asp:Parameter Name="StatusID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="Des" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="StatusID" Type="Int32" />
<asp:Parameter Name="Des" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
код за c #:
protected void PSGridView_RowCommand(object sender, GridViewCommandEventArgs e) {
var exist = 0;
if (e.CommandName == "DeletePS" )
{
some code
}
else if (e.CommandName == "UpdatePS")
{
var exist1 = 0;
//When update, check if the new name is already exist in the database
//*******************************************************************
var index = Convert.ToInt32(e.CommandArgument);
if (index >= 10)
{
index = index % 10;
}
var pageSize = PSGridView.PageSize;
GridViewRow row = PSGridView.Rows[index % pageSize];
TextBox txt = row.FindControl("PSBind") as TextBox;
string t = txt.Text;
exist1 = check_exist(t);
if (exist1 == 1)
{
errorboxactions.Attributes.Add("style", "display:block");
errormsgactions.InnerHtml = "This name already exist ! type another name";
}
//if not exist
//*************
else
{
PSGridView.UpdateRow(index, true);
PSGridView.DataBind();
updateboxactions.Attributes.Add("style", "display:block");
updatemsgactions.InnerHtml = "Protocol Status has been updated successfully";
}
}
}