[英]The GridView fired event RowEditing which wasn't handled when search for specific row
我有一个带有2列的网格视图,一列用于文本框,另一列用于编辑图标。 如果单击编辑图标,它将打开文本框进行编辑,第二列将包含更新图标和取消图标。 在gridview上方还有一个搜索文本框,允许用户搜索特定的行。
第一种情况:例如,当我有5行并单击任意行中的编辑图标时,它将打开编辑框,我可以进行编辑。
第二种情况:当我在搜索字段中键入文本并单击搜索按钮时,它将检索相应的行并将其单独显示在网格视图中。
问题是,当我单击该行(搜索结果)的编辑图标时,它显示:GridView引发了未处理的事件RowEditing
这是我的gridview:
<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";
}
}
}
只需做一件简单的事情就可以激发gridview的RowEditing事件。
select gridview
go to properties
select events and then double click on row editing and then run the page again.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.