Мне нужно иметь возможность изменять элементы управления из моего детального описания программно на databind. Прямо сейчас я использую этот код, но у меня ошибка «Индекс был вне диапазона».Как получить доступ к элементу управления из описания деталей программно?
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, а не когда страница изначально загружается. Может ли это так? Если да, то где я должен выполнить этот код, если не в привязке данных detailview?
Вот 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>
Вы можете разместить свою разметку детальной информации? – Alex
Я обновил вопрос с помощью разметки –