У меня есть вложенный gridview, который позволяет вызывать родительский gridview как gridview1, а дочерний gridview как gridview2.
Для каждой строки родительского gridview (gridview1) я добавляю дочерний gridview (gridview2) в зависимости от номера счета, которыйприсутствует на этой конкретной строке в gridview1.Вот снимок экрана этого вывода здесь .
Внутри дочернего gridview (т. Е. Gridview2) у меня есть кнопка ссылки для скачивания, которую я добавляю через шаблон элемента и название программного обеспечения, которые я привязываю к gridview2 после фильтрации вывода, полученного через List <>.Но, как вы можете видеть, кнопка ссылки на скачивание сначала обрабатывается, а затем - названия программного обеспечения.Но я хочу, чтобы заголовки программного обеспечения отображались первыми, а кнопка ссылки на скачивание - как последний столбец в дочернем gridview (т. Е. Gridview2).
Вот код на странице .aspx для вложенных видов сетки.Я получил предложение от одного из участников этого форума, что я могу добавить ярлык перед кнопкой ссылки на скачивание и связать его с источником данных.Я просто не мог этого понять.Как можно это сделать?
<asp:GridView ID="UserTransactionGridView" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1" OnRowDataBound="UserTransactionGridView_RowDataBound"
HorizontalAlign="Center" AllowPaging="true">
<Columns>
<asp:BoundField DataField="Date Of Transaction" HeaderText="Date Of Transaction"
SortExpression="Date Of Transaction" ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="Invoice Number" HeaderText="Invoice Number" SortExpression="Invoice Number"
ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="totalAmount" HeaderText="Total Amount" ReadOnly="True"
SortExpression="totalAmount" ItemStyle-HorizontalAlign="Center" />
<asp:TemplateField>
<HeaderTemplate>
<asp:Label Text="Software Title" ID="softwareLbl" runat="server"></asp:Label>
</HeaderTemplate>
<ItemTemplate>
<asp:GridView ID="gridView2" runat="server" HorizontalAlign="Left" GridLines="None"
ShowHeader="false">
<Columns>
<asp:TemplateField ItemStyle-HorizontalAlign="Center" ItemStyle-Width="100px">
<ItemTemplate>
<asp:LinkButton ID="DownloadLbtn" Text="Download" runat="server" OnClick="DownloadLbtn_Click"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:componentConnString %>"
SelectCommand="SelectUserPreviousHistory" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter DefaultValue="xyz" Name="userName" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
Кстати, вот код, в котором я связываю дочерний gridview с источником данных (который является массивом, который я фильтрую на основе номера счета-фактуры, присутствующего в родительском gridview (т.е., gridview1)).
protected void UserTransactionGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
GridView gridView2 = (GridView)e.Row.FindControl("gridView2");
System.Data.DataRowView dr = (System.Data.DataRowView)e.Row.DataItem;
gridView2.AutoGenerateColumns = true;
String x = dr[1].ToString();
softwareTitlesList = SoftwareListRetrieve();
ArrayList titles = new ArrayList();
foreach (SoftwareTitles softwareTitle in softwareTitlesList)
{
if (softwareTitle.InvoiceNumber.Contains(x))
titles.Add(softwareTitle.SoftwareTitle);
}
gridView2.DataSource = titles;
gridView2.DataBind();
softwareTitlesList.Clear();
}
}
Кстати, я использую Visual Studio 2008, asp.net/c# и не LINQ в моем проекте веб-приложения.Пожалуйста, помогите мне.
Спасибо в ожидании
PS: Если кому-то не понравится этот вопрос, вы можете удалить его после получения ответа, а не голосования или пометки.