为什么在我的行进入编辑模式之前,我需要在网格视图控件中点击编辑链接两次?
<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;
}
}
答案 0 :(得分:1)
您需要避免在每次回发时重新绑定gridview。
If not ispostback then
GridView1.DataSource = dt
GridView1.DataBind()
end if
否则,您只需覆盖Gridview更改。
在此链接上有很好的解释...... http://www.pcreview.co.uk/forums/gridview-two-clicks-needed-enter-place-editing-t3328887.html
答案 1 :(得分:0)
尝试处理RowEditing事件以设置EditItem索引:
protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
{
gv.EditIndex = e.NewEditIndex
}
答案 2 :(得分:0)
我检查过你的代码有些错误。更正您的代码,如下所示:
<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;
}
}
如果使用此代码问题无法解决那么你的cssclass中可能会遇到一些问题,因为我已经使用ObjectDataSource在我的机器上检查了你的代码,并且使用编辑过的代码很好。
此外,我想知道 CRUID.Edit.ToString()中的 CRUID 是什么 以及为什么在Page_Load事件中使用了以下行
this.ods.SelectParameters[0].DefaultValue = "";
因为没有与ObjectDataSource中使用的SelectMethod =“GetAll”方法相关联的参数。
愿这个答案对你有所帮助。
答案 3 :(得分:0)
我猜您的网页上的更新面板存在一些冲突..
尝试removing all your Update Panels and try again
..它肯定会有效..我的工作几秒钟之前..所以想分享会很好..