Asp.net gridview编辑需要单击两次
为什么在我的行进入编辑模式之前,我需要在gridview控件中单击编辑链接两次Asp.net gridview编辑需要单击两次,asp.net,gridview,Asp.net,Gridview,为什么在我的行进入编辑模式之前,我需要在gridview控件中单击编辑链接两次 <asp:ObjectDataSource ID="ods" runat="server" TypeName="Employee" SelectMethod="GetAll" ></asp:ObjectDataSource> <asp:GridView ID="GridView1" runat="server" CssClass="styled" OnRowCom
<asp:ObjectDataSource ID="ods" runat="server" TypeName="Employee"
SelectMethod="GetAll" ></asp:ObjectDataSource>
<asp:GridView ID="GridView1" runat="server" CssClass="styled"
OnRowCommand="gv_RowCommand" DataSourceID="ods"
OnSorting="gv_Sorting" >
<Columns>
...........
</Columns>
<ItemTemplate>
<ItemTemplate>
<div class='actions'>
<asp:Button ID="btnEdit" runat="server" Text=" Edit " ToolTip="Edit Row" CommandName="Edit" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"Id") %>' CausesValidation="False" />
<span style="padding-left:10px"></span>
</div>
</ItemTemplate>
</asp:GridView>
protected override void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.ods.SelectParameters[0].DefaultValue = "";
}
}
protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == CRUID.Edit.ToString())
{
this.gv.ShowFooter = false;
}
}
...........
受保护的覆盖无效页面加载(对象发送方,事件参数e)
{
如果(!Page.IsPostBack)
{
this.ods.SelectParameters[0].DefaultValue=“”;
}
}
受保护的void gv_row命令(对象发送方,GridViewCommandEventArgs e)
{
if(e.CommandName==CRUID.Edit.ToString())
{
this.gv.ShowFooter=false;
}
}
尝试处理行编辑事件以设置EditItem索引:
protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
{
gv.EditIndex = e.NewEditIndex
}
在我检查时,您的代码中有一些错误。按如下所示更正代码:
<asp:ObjectDataSource ID="ods" runat="server" TypeName="Employee"
SelectMethod="GetAll" ></asp:ObjectDataSource>
<asp:GridView ID="GridView1" runat="server" CssClass="styled"
OnRowCommand="gv_RowCommand" DataSourceID="ods"
OnSorting="gv_Sorting" >
<Columns>
...........
<asp:TemplateField>
<ItemTemplate>
<div class='actions'>
<asp:Button ID="btnEdit" runat="server" Text=" Edit " ToolTip="Edit Row" CommandName="Edit" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"Id") %>' CausesValidation="False" />
<span style="padding-left:10px"></span>
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
protected override void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.ods.SelectParameters[0].DefaultValue = "";
}
}
protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Edit")
{
this.gv.ShowFooter = false;
}
}
因为ObjectDataSource中没有与SelectMethod=“GetAll”方法关联的参数
希望这个答案对您有所帮助。您需要避免在每次回发时重新绑定gridview
If not ispostback then
GridView1.DataSource = dt
GridView1.DataBind()
end if
否则,您只需覆盖Gridview更改
很好的解释在这个链接。。。
我想可能与您页面上的UpdatePanel有些冲突
请尝试删除所有更新面板,然后重试。。它肯定会有用的。。我的几秒钟前就开始工作了。。因此,我认为分享会很好。您是否在每个页面加载时填充gridview?不,我没有,我用更多的代码更新了我的问题。可能是您的对象数据源(我假设是“ods”)的问题。不管有什么问题,更多的代码会有所帮助。是的,这是对象数据源,我把断点放在获取数据的GetAll方法上,我注意到,当我第一次单击edit时,它会转到GetAll方法,我点击F5,然后再次返回到同一GetAll方法,我第二次点击F5,然后它会返回到未处于编辑模式的页面,当我第二次点击它时,它会转到要获取所有方法,请单击F5,然后转到RowCommand事件。。。奇怪。。。可能是什么?这听起来很疯狂,但请尝试在RowCommand事件中注释以下行:This.gv.ShowFooter=false;在RowCommand事件中更改页脚可见性可能会导致ODS触发两次。
If not ispostback then
GridView1.DataSource = dt
GridView1.DataBind()
end if