将值从Datatable传递到UserControl属性

时间:2013-04-02 05:17:41

标签: asp.net vb.net

我是编程新手。我正在创建一个程序,它动态地将一个UserControl添加到Gridview模板,我想将一个值从datatable传递给UserControl的一个属性。 Gridview中的TemplateField已预先加载了1个用户控件,如果单击某个按钮,则会添加带有编号的新UserControl。

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

        Dim dtSESRatings As New DataTable

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

        gvSesRating.DataSource = dtSESRatings
        gvSesRating.DataBind()

我想将行添加到用户控件中的Numbering标签,这是在SESRatings.ascx上设置的IncrementNumber属性。 这是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并将其传递给User Control的IncrementNumber属性。我怎样才能做到这一点?请帮忙。感谢。

1 个答案:

答案 0 :(得分:0)

您必须在gridview控件中使用Eval标记:

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