2013-04-02 54 views
0

我是编程新手。我正在创建一个将UserControl动态添加到Gridview模板的程序,我想将一个值从数据表传递给UserControl的一个属性。 GridView中的TemplateField已经预装了1个用户控件,如果我点击一个按钮,这将添加一个带有编号的新UserControl。将值从数据表传递给UserControl属性

以下是FormLoad事件页面中的代码。

 Dim dtSESRatings As New DataTable 

     dtSESRatings.Columns.Add("IncrementNumber") 
     dtSESRatings.Rows.Add("1") 
     ViewState("dtSESRatings") = dtSESRatings 

     gvSesRating.DataSource = dtSESRatings 
     gvSesRating.DataBind() 

我想该行添加到这是IncrementNumber属性设置SESRatings.ascx用户控件的编号标签。 这是ASP代码:

<asp:GridView ID="gvSesRating" runat="server" Width="100%" ShowHeader="false" GridLines="None" 
             AutoGenerateColumns="False"> 
             <Columns> 
              <asp:TemplateField> 
               <ItemTemplate> 
                <ses:SESRatings runat="server" ID="ses1" IncrementNumber="1" /> 
               </ItemTemplate> 
              </asp:TemplateField> 
             </Columns> 
            </asp:GridView> 

FormLoad后,在点击一个按钮“添加新等级”,它应该是建立在GridView一个新的用户控件和代码是在这里:

Protected Sub btnAddRating_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAddRating.Click 
    Dim dt As DataTable = ViewState("dtSESRatings") 
    Dim dtCnt As Integer = dt.Rows.Count 
    dtCnt += 1 
    dt.Rows.Add(dtCnt) 
    ViewState("dtSESRatings") = dt 

    gvSesRating.DataSource = dt 
    gvSesRating.DataBind() 

    dt = Nothing 
End Sub 

我想要在GridView中添加的用户控件将获得dtCnt并将其传递给用户控件的IncrementNumber属性。我怎样才能做到这一点?请帮忙。谢谢。

回答

0

您必须在GridView控件使用eval标签:

<ses:SESRatings runat="server" ID="ses1" IncrementNumber='<%# Eval("IncrementNumber") %>' /> 
+0

我已经添加了评估和演示标签,但不幸的是,添加第二个用户控件后,编号1变成0所有的用户控件现在的编号0。 –