2010-08-05 37 views
1

編輯 - 感謝您迄今爲止的回覆,抱歉沒有明確說明問題所在。實際的標記代碼在DetailsView的C#代碼中忽略AutoGenerateEditButton

<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方法中的代碼放入其中並沒有做任何改進。

也許我想太複雜 - 不應該有一個簡單的方法來設置編程的按鈕應該/不應該顯示?

在此先感謝您的任何意見。

Gorgsenegger

+0

false是屬性的默認值。這些代碼和標記行不應該做任何事情。你是否修改代碼中其他任何地方的屬性? 「您在設置上述財產方面似乎沒有做任何事情」,您是什麼意思? – DaveB 2010-08-05 16:20:33

回答

0

如果絕密背後的

[... Some Stuff...] 

代碼包含detailsView.DataBind(呼叫)(直接或通過的Page.DataBind()),那麼這就是你的問題。必須在DetailsView上調用DataBind之前設置AutoGenerateEditButton屬性。