【问题标题】:How to bind data to gridview from List如何将数据从列表绑定到gridview
【发布时间】:2014-08-09 06:25:55
【问题描述】:

我有一个用于电话号码的 Dto:

namespace Dto
{
public class PhoneNumberDto
{
    public Int16 PhoneTypeId { get; set; }
    public string PhoneNumber { get; set; }
}
}

以及此 Dto 的列表:

 List<PhoneNumberDto> phonenum = new List<PhoneNumberDto>();

我也有一个gridview:

 <table style="width: 100%">
                <tr>
                    <td style="direction: rtl;"align="center" class="auto-style8">

                        <asp:UpdatePanel ID="UpdatePanelSpect1" runat="server">
                            <ContentTemplate>

                                <asp:GridView ID="GridViewCertificateType" runat="server" AutoGenerateColumns="False" CellPadding="3" OnRowCommand="GridViewCertificateType_RowCommand" OnRowDataBound="GridView1_RowDataBound" ShowFooter="True" Width="100%" Font-Names="Tahoma" Font-Size="9pt" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px">
                                    <Columns>
                                        <asp:TemplateField>
                                            <HeaderTemplate>
                                              Phone Type
                                            </HeaderTemplate>
                                            <ItemTemplate>
                                                <asp:DropDownList ID="DDLSpecialty" runat="server" Height="24px" Width="500px">
                                                </asp:DropDownList>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField>
                                            <ItemTemplate>
                                                <asp:Label ID="LabelC1" runat="server" Text="Label" Visible="False"></asp:Label>

                                                <asp:TextBox ID="TextBox_Phone" runat="server"></asp:TextBox>                                                </ItemTemplate>
                                        </asp:TemplateField>


                                        <asp:TemplateField>
                                            <FooterTemplate>
                                                <asp:ImageButton ID="ImageButtonAddSpec" runat="server" ImageUrl="~/ImageWebForm/add.png" Width="18px" OnClick="ImageButtonAddSpec_Click" />
                                            </FooterTemplate>
                                            <ItemTemplate>
                                                <asp:ImageButton ID="ImageButtonDel0" runat="server" ImageUrl="~/ImageWebForm/Delete.png" Width="18px" CommandName="Del" CommandArgument="<%# Container.DataItemIndex %>" />
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                    </Columns>
                                    <FooterStyle BackColor="White" ForeColor="#000066" />
                                    <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
                                    <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
                                    <RowStyle ForeColor="#000066" />
                                    <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
                                    <SortedAscendingCellStyle BackColor="#F1F1F1" />
                                    <SortedAscendingHeaderStyle BackColor="#007DBB" />
                                    <SortedDescendingCellStyle BackColor="#CAC9C9" />
                                    <SortedDescendingHeaderStyle BackColor="#00547E" />
                                </asp:GridView>
                            </ContentTemplate>
                            <Triggers>
                                <asp:AsyncPostBackTrigger ControlID="GridViewCertificateType" EventName="RowCommand" />
                            </Triggers>
                        </asp:UpdatePanel>
                    </td>
                </tr>


            </table> 

现在我想从我的点“phonenum”列表中将数据设置到 Gridview 中的下拉列表和文本框,例如“PhoneTypeId”设置为下拉列表,phoneNumber 设置为文本框

【问题讨论】:

  • 这里我假设您的 DDLSpecialty 已经绑定,并且您想将其 selectedvalue 与 PhoneTypeId 和 phoneNumber 设置为文本框右侧???
  • 它非常不清楚你想要实现什么。你的标题是什么,你的内容是什么......如果你能详细说明你想要什么?
  • @KrishnrajRana:是的,是的

标签: asp.net gridview generic-list


【解决方案1】:

您可以直接将 List 绑定到您的 GridView,然后在 OnRowDataBound 事件中或直接在模板中执行类似的操作。

模板中的第一个。

    <asp:TemplateField>
              <HeaderTemplate>
                         Phone Type
             </HeaderTemplate>
             <ItemTemplate>
                 <asp:DropDownList ID="DDLSpecialty" Selectedvalue='<%#((PhoneNumberDto)Container.DataItem).PhoneTypeId%>' runat="server" Height="24px" Width="500px">
                 </asp:DropDownList>
             </ItemTemplate>
             </asp:TemplateField>
            <asp:TemplateField>
            <ItemTemplate>
                 <asp:Label ID="LabelC1" runat="server" Text="Label" 
                  Visible="False"></asp:Label>
                <asp:TextBox ID="TextBox_Phone" 
                 Text='<%#((PhoneNumberDto)Container.DataItem).phoneNumber %>' runat="server"></asp:TextBox>        
           </ItemTemplate>
</asp:TemplateField>

或者在 OnRowDataBound 事件中使用 FindControl() 方法你可以为你的控件赋值。

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
       PhoneNumberDto dtoPhone = (PhoneNumberDto)e.Row.DataItem;
       ((TextBox)(e.Row.FindControl("txtPhoneNo"))).Text = dtoPhone.PhoneNumber;
       ((DropDownList)(e.Row.FindControl("DDLSpecialty"))).SelectedValue = dtoPhone.PhoneTypeId;
    }
}

我希望您可以从上述 2 选项中得到您的解决方案...

【讨论】:

    猜你喜欢
    • 2014-07-29
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多