2015-08-27 2 views
0

У меня есть C# .net приложение, использующее Gridview. У меня возникла проблема с попыткой определить, как выполнить эту задачу.Gridview - отображение числа строк на основе переменной

Мне нужен мой Gridview (on page_load), чтобы отобразить количество строк на основе числа в переменной. Например, если мне нужен variable= 4, мне нужно всего лишь 4 строки для отображения в моем gridview с текстовым полем поля шаблона. Я не хочу, чтобы какие-либо данные отображались, просто возможность для пользователя вводить свой адрес электронной почты в каждом текстовом поле. У меня есть 4 строки, но не templatefield в каждой строке. Это мой код до сих пор.

.aspx

<asp:GridView ID="gvAddEmail" runat="server" Width="100%" CssClass="table table-striped table-bordered table-responsive" Caption="Enter Email" ShowFooter="true" AutoGenerateColumns="True" CellPadding="0"> 
    <Columns> 
     <asp:TemplateField HeaderText="Email Address(s)" HeaderStyle-CssClass="visible-xs" ItemStyle-CssClass="visible-xs"> 
      <ItemTemplate> 
       <%# Eval ("VisitorEmail") %> 
      </ItemTemplate> 
      <FooterTemplate> 
       <asp:TextBox ID="txtVEmail" runat="server"></asp:TextBox> 
      </FooterTemplate> 
     </asp:TemplateField> 


    </Columns> 
    <AlternatingRowStyle BackColor="#ccffcc" /> 
    <EmptyDataTemplate> 
     <tr> 
      <th scope="col">Email</th> 

     </tr> 
     <tr> 
      <td> 
       <asp:TextBox ID="txtVEmail" runat="server"></asp:TextBox> 
      </td> 

      <!-- <td> 
            <asp:Button ID="btnSubmitVI" runat="server" Text="Submit Visitor Information" OnClick="InsertVisitorInfo" CommandName="EmptyDataTemplate" /> 
           </td> --> 
     </tr> 
    </EmptyDataTemplate> 
</asp:GridView> 

код за

protected void Page_Load(object sender, EventArgs e) { 

    InitGrid(); 

    if (!IsPostBack) { 
     PanelSignIn.Visible = false; 

    } 
} 


public class Data { 

    public string VisitorEmail { 
     get; 
     set; 
    } 

} 


private void InitGrid() { 
    int NumberOfRows = GetLocation(); 
    Response.Write("Number of Rows that should display: " + NumberOfRows); //debugging 
    List <Data> InitialData = new List <Data>(); 
    for (int i = 0; i < NumberOfRows; i++) { 
     InitialData.Add(new Data()); 
    } 


    gvAddEmail.DataSource = InitialData; 
    gvAddEmail.DataBind(); 

} 

ответ

0

Я думаю, вы должны изменить ваш

<ItemTemplate> 
    <%# Eval ("VisitorEmail") %> 
</ItemTemplate> 

в

<ItemTemplate> 
    <asp:TextBox runat="server" id="textBoxEmail" text='<%# Bind("VisitorEmail") %>'> 
    </asp:TextBox> 
</ItemTemplate> 

.aspx

<div> 
    <asp:DropDownList runat="server" ID="ddlNumberOfRow" AutoPostBack="True" onselectedindexchanged="ddlNumberOfRow_SelectedIndexChanged"> 
     <asp:ListItem>5</asp:ListItem> 
     <asp:ListItem>10</asp:ListItem> 
     <asp:ListItem>15</asp:ListItem> 
     <asp:ListItem>20</asp:ListItem> 
    </asp:DropDownList> 
    <asp:GridView runat="server" ID="gvAddEmail" AutoGenerateColumns="False"> 
     <columns> 
      <asp:TemplateField HeaderText="Visitor Email"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("VisitorEmail") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:TextBox runat="server" id="textBoxEmail" text='<%# Bind("VisitorEmail") %>'></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </columns> 
    </asp:GridView> 
</div> 

.cs

public partial class Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      BindGvAddEmail(); 
     } 
    } 

    private void BindGvAddEmail() 
    { 
     List<myData> initialData = new List<myData>(); 
     for (int i = 0; i < int.Parse(ddlNumberOfRow.SelectedValue.ToString()); i++) 
     { 
      initialData.Add(new myData()); 
     } 
     gvAddEmail.DataSource = initialData; 
     gvAddEmail.DataBind(); 
    } 

    protected void ddlNumberOfRow_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     BindGvAddEmail(); 
    } 
} 

public class myData 
{ 
    public string VisitorEmail 
    { 
     get; 
     set; 
    } 
} 
Смежные вопросы