我需要能夠從我的detailsview編程數據綁定上修改控件。現在我使用這段代碼,但我得到一個「索引超出範圍」的錯誤。如何以編程方式從detailsview訪問控件?
Private Sub dtlApplication_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles dtlApplication.DataBound
Dim resumeLink As HyperLink = dtlApplication.Rows.Item(0).FindControl("lnkResume")
resumeLink.NavigateUrl = "Resumes/"
End Sub
我也試過這個,但得到了「對象引用未設置爲對象的實例」錯誤。
Private Sub dtlApplication_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles dtlApplication.DataBound
Dim resumeLink As HyperLink = dtlApplication.FindControl("lnkResume")
resumeLink.NavigateUrl = "Resumes/"
End Sub
我認爲這個問題可能是在DetailsView沒有任何控件當頁面最初加載,因爲它沒有得到他們,直到我在我的主要的GridView中選擇一行。基本上,我試圖在gridview中選擇一行時執行此代碼,而不是在頁面最初加載時執行此代碼。這可能嗎?如果是這樣,如果不在detailsview數據綁定中,我應該在哪裏執行此代碼?
這裏是在DetailsView和相應的數據源標記:
<asp:DetailsView ID="dtlApplication" runat="server" AutoGenerateRows="false"
DataKeyNames="appID" DataSourceID="ds2" CellPadding="0" BorderColor="Transparent"
BorderWidth="0px" GridLines="None" HorizontalAlign="Left" Width="459" CssClass="dtlView">
<Fields>
<asp:TemplateField showheader="false">
<ItemTemplate>
<h3>Resume</h3>
<asp:HyperLink runat="server" ID="lnkResume" Text="View Resume »"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
</Fields>
<PagerSettings Mode="NextPreviousFirstLast" PageButtonCount="5" FirstPageText="← First" LastPageText="Last →"
nextpagetext="Next »" previouspagetext="« Previous" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" CssClass="paging" />
</asp:DetailsView>
<asp:SqlDataSource ID="ds2" runat="server" ConnectionString="<%$ ConnectionStrings:cn %>"
SelectCommandType="StoredProcedure" SelectCommand="sp_SelectApplicationDetail"
EnableCaching="true" CacheDuration="600">
<SelectParameters>
<asp:ControlParameter Name="appID" ControlID="gvAdmin" PropertyName="SelectedValue"></asp:ControlParameter>
</SelectParameters>
</asp:SqlDataSource>
您可以發佈您的detailsview標記嗎? – Alex 2011-03-02 20:09:25
我用標記更新了問題 – 2011-03-02 20:20:04