我有FormView:
<asp:FormView ID="fvReport" runat="server" DefaultMode="ReadOnly" AllowPaging="false" OnModeChanging="fvReport_ModeChanging" DataKeyNames="id">
protected void fvReport_ModeChanging(Object sender, FormViewModeEventArgs e)
{
switch (e.NewMode)
{
case FormViewMode.Edit:
fvReport.AllowPaging = false;
break;
}
}
在ItemTamplate中的我把LinkButton:
<asp:LinkButton ID="lbEdit" runat="server" CausesValidation="true" CommandName="Edit" CommandArgument='<%# Eval("id") %>'>Редактировать</asp:LinkButton>
当然,FormView有EditItemTemplate部分。
当我单击Button时,FormView将刷新并保持在ReadOnly状态。我做错了什么?
答案 0 :(得分:13)
你必须调用FormView的ChangeMode方法并传递模式
fvReport.ChangeMode(DetailsViewMode.Edit);
答案 1 :(得分:0)
我通常用于从formView进入编辑模式的另一个选项是添加和定义EditItemTemplate元素。这使您可以更轻松地编辑应用程序。
在您的formView中,您可能需要将DefaultMode
更改为“编辑”。同样在你的代码后面试试:
protected void fvReport_ModeChanging(Object sender, FormViewModeEventArgs e)
{
}
protected void lbEdit_Click(object sender, EventArgs e)
{
LinkButton lbEdit = (LinkButton)fvReport.FindControl("lbEdit");
if (sender == lbEdit)
{
fvReport.DataBind();
fvReport.ChangeMode(FormViewMode.Edit);
}
}
答案 2 :(得分:0)
可能还有其他原因导致FormView
未切换。这通常归结为格式错误的HTML。您的设计师有时会通过显示类似的内容告诉您格式错误的部分......
在你没有得到这个明显信息的情况下,FormView
没有切换通常会有一些不太明显的东西,比如错误的AssociatedControlId
属性。我建议您查看标签,验证器以及控件必须与另一个控件关联的任何内容。像这样小的东西...
<asp:Label runat="server"
ID="labelAccessGrantedBy"
Text="Access Granted By"
AssociatedControlID="textAccessGranted" />
<asp:TextBox runat="server"
ID="textAccessGrantedBy"
CssClass="wmioSmall wFull"
Text='<%# Bind("access_granted_by") %>' />
请注意故意使用上面的textAccessGranted
,而不是实际的textAccessGrantedBy
TextBox
?这就是过去命令处理失败的地方。