0

我是编程新手。我正在创建一个程序,它动态地将 UserControl 添加到 Gridview 模板中,并且我想将数据表中的值传递给 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()

我想将该行添加到用户控件中的编号标签,这是在 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 并将其传递给用户控件的 IncrementNumber 属性。我怎样才能做到这一点?请帮忙。谢谢。

4

1 回答 1

0

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

<ses:SESRatings runat="server" ID="ses1" IncrementNumber='<%# Eval("IncrementNumber") %>' />
于 2013-04-02T05:45:38.793 回答