2010-01-20 22 views
1

我有一個列表視圖,其中帶有顯示「Step#x」的標籤,帶有說明的另一個標籤以及用於編輯或刪除的2個鏈接按鈕。在ListView的頁腳處是另一個按鈕「Add New Step」,它打開一個空的TextBox和兩個按鈕來保存和取消。我也想讓它增加標籤,但我似乎可以在後面的代碼中找到控件來更改它的文本。我該怎麼做呢?在ListView的插入模板中的某個控件上綁定某個值

這裏的ASP標記:

<asp:ListView ID="lvSteps" runat="server" DataSourceID="ldsProcessStep" DataKeyNames="ID" InsertItemPosition="None"> 
    <LayoutTemplate> 
     <div><asp:PlaceHolder ID="itemPlaceholder" runat="server" /></div> 
     <asp:Button ID="btnAddNewStep" runat="server" Text="Add New Step" OnClick="btnAddNewStep_Click" /> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <table width="100%"> 
      <tr> 
       <td> 
        <asp:label runat="server" Text='<%# Eval("StepNumber", "Step #{0}") %>' Width="75px" style="font-size:medium; font-weight:bold;" /> 
       </td> 
       <td> 
        <div style="text-align:left; width:350px;"> 
         <asp:label runat="server" Text='<% #(Eval("Instruction")) %>' style="font-size:85%;" /> 
        </div> 
       </td> 
       <td> 
        <div style="width:50px;"> 
         <div><asp:LinkButton Text="Edit" runat="server" CommandName="Edit" style="font-size:75%;" /></div> 
         <div style="margin-top:5px;"><asp:LinkButton Text="Delete" runat="server" style="font-size:75%;" OnClientClick='<%# CreateConfirmation(Eval("StepNumber")) %>' /></div> 
        </div> 
       </td> 
      </tr> 
     </table> 
     <hr style="width:90%; margin-left:20px;" /> 
    </ItemTemplate> 
    <InsertItemTemplate> 
     <table width="100%"> 
      <tr> 
       <td> 
        <asp:Label ID="lblNewStepNumber" runat="server" Width="75px" Text="????" style="font-size:medium; font-weight:bold;" /> 
       </td> 
       <td> 
        <div style="text-align:left; width:350px;"> 
         <asp:TextBox ID="txtInstruction" runat="server" TextMode="MultiLine" Rows="3" Width="100%" Text='<%# Bind("Instruction") %>' style="font-size:85%;" /> 
        </div> 
       </td> 
       <td> 
        <div style="width:50px;"> 
         <div><asp:LinkButton ID="btnInsert" Text="Save" runat="server" CommandName="Insert" style="font-size:75%;" /></div> 
         <div style="margin-top:5px;"><asp:LinkButton ID="lnkCancelInsert" Text="Cancel" runat="server" CommandName="Cancel" OnClick="btnCancelInsert_Click" style="font-size:75%;" /></div> 
        </div> 
       </td> 
      </tr> 
     </table> 
    </InsertItemTemplate> 
</asp:ListView> 

和一些嘗試代碼:

public void btnAddNewStep_Click(object sender, EventArgs e) 
{ 
    lvSteps.InsertItemPosition = InsertItemPosition.LastItem; 
    lvSteps.FindControl("btnAddNewStep").Visible = false; 

    //Cannot find control 

    //lvSteps.FindControl("lblNewStepNumber").Text = "doesn't work" 

    //Label lbl = (Label)lvSteps.FindControl("lblNewStepNumber"); 
    //lbl.Text = "Doesn't work"' 
} 

回答

3

我相信lvSteps有InsertItem參考(如在lv.InsertItem.FindControl( 「」)),您可以使用它來查找插入模板中的控件。對於lvSteps.FindControl查找在佈局模板中創建的控件。我認爲ItemDataBound或ItemCreated也可能爲插入項目啓動,但我不是100%確定的。

屬性定義可以在這裏找到:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.insertitemtemplate.aspx

HTH。

+0

使用lvSteps.InsertItem.FindControl(「」),我仍然得到「對象引用未設置爲對象的實例」 – Justen

+0

好的,那麼您可以嘗試itemcommand或itemdatabound事件處理程序,並訪問e.Item去插入項目,我相信這也是一個選項...我不知道爲什麼InsertItem爲空,但我知道你在訪問它時必須小心。 InsertItem只有綁定到列表時纔可用。我猜...請查看上面的文檔鏈接瞭解更多關於該屬性的信息;沒有看到有關null的任何問題。絕對必須在設置insertitemposition後訪問它... –

+0

有沒有可能將Eval作爲我的標籤文本?像 Justen

相關問題