代码之家  ›  专栏  ›  技术社区  ›  Gorgsenegger

在详细信息视图的C代码中,AutoGenerateEditButton被忽略。

  •  1
  • Gorgsenegger  · 技术社区  · 14 年前

    编辑-感谢您迄今为止的回复,很抱歉没有确切说明问题所在。实际标记代码为

    <asp:DetailsView ID="dvwSomeDetailsView" runat="server" 
      AutoGenerateRows="False" DataSourceID="SomeDataSourceID">
      <Fields>
        <asp:TemplateField HeaderText="SomeText" SortExpression="SomeText">
          <EditItemTemplate>
            <cc1:Editor ID="txtDescription" runat="server" 
              Content='<%# Bind("SomeText") %>' />
          </EditItemTemplate>
          <ItemTemplate>
            <asp:Label ID="lblDescription" runat="server" 
              Text='<%# Bind"SomeText") %>'></asp:Label>
          </ItemTemplate>
        </asp:TemplateField>
    
        <asp:CommandField ButtonType="Image" CancelImageUrl="~/img/cancel.png" 
          EditImageUrl="~/img/edit.png" InsertImageUrl="~/img/insert.png"
          UpdateImageUrl="~/img/save.png" ShowEditButton="True" />
    </asp:DetailsView>
    

    我不太确定是否应该删除设置ShowEditButton属性,但当我尝试这样做时,仍然无法通过编程方式设置它。

    现在在代码隐藏文件中,我将page-load方法简化为

    protected void Page_Load( object sender, EventArgs e )
    {
      dvwSomeDetailsView.AutoGenerateEditButton = true;
    }
    

    我想要实现的是,通过更改page_Load方法中的分配,我可以隐藏/显示编辑按钮,但这不起作用。在标记文件中四处播放时,我可以使按钮显示或隐藏,但我无法从代码隐藏文件中更改它。

    我还尝试在设置属性后显式调用dvwsomeDetailsView.DataBind,但这也不起作用。重写onPreRender并将page-load方法中的代码放入它们中也没有做任何改进。

    也许我想得太复杂了——难道不应该有一个简单的方法来编程设置按钮是否应该/不应该显示吗?

    如有任何意见,请提前致谢。

    蛇颈鹿

    1 回复  |  直到 14 年前
        1
  •  0
  •   Jason Berkan whiteproud    14 年前

    如果代码在

    [... Some Stuff...]
    

    包含对detailsView.databind()的调用(直接调用或通过page.databind()),这就是您的问题。在对DetailsView调用DataBind之前,必须设置AutoGenerateEditButton属性。