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"'
}
使用lvSteps.InsertItem.FindControl(「」),我仍然得到「對象引用未設置爲對象的實例」 – Justen
好的,那麼您可以嘗試itemcommand或itemdatabound事件處理程序,並訪問e.Item去插入項目,我相信這也是一個選項...我不知道爲什麼InsertItem爲空,但我知道你在訪問它時必須小心。 InsertItem只有綁定到列表時纔可用。我猜...請查看上面的文檔鏈接瞭解更多關於該屬性的信息;沒有看到有關null的任何問題。絕對必須在設置insertitemposition後訪問它... –
有沒有可能將Eval作爲我的標籤文本?像'我不太確定如何編寫數據庫或項目命令,因爲lv既不做也不做。該按鈕只是使insertitemtemplate可見,沒有數據被保存。 –
Justen