0

私のGridViewは次のように入力されています:

<asp:Panel ID="pnlGrid" runat="server">
    <div class="m_container" style="margin-bottom:20px;">
        <asp:GridView ID="grdView" runat="server" CssClass="GridViewStyle"
            AutoGenerateColumns="False" GridLines="None" Width="125%" onrowdatabound="builderGridView_RowDataBound" >
            <Columns>
                <asp:BoundField DataField="id" Visible="False" />
                <asp:BoundField HeaderText="Info" />
                <asp:TemplateField>
                  <ItemTemplate>
                    <asp:LinkButton name='<%#Eval("status") %>' CommandArgument='<%#Eval("id")%>' runat="server" Text='<%#Eval("status")%>' CommandName='<%#Eval("status")%>' ID="statusLink" />
                  </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <RowStyle CssClass="RowS" />
            <EmptyDataRowStyle CssClass="EmptyS" />
            <PagerStyle CssClass="PagerStyle" />
            <SelectedRowStyle CssClass="SelectedS" />
            <HeaderStyle CssClass="HeaderS" />
            <EditRowStyle CssClass="EditRowS" />
            <AlternatingRowStyle CssClass="AltRowS" />
        </asp:GridView>
    </div>
</asp:Panel>
</asp:Content>

そして、背後にあるコードは次のとおりです。

Private Sub LoadData(ByRef theStatus As Integer)
    Dim objConn As MySqlConnection
    Dim objCmd As MySqlCommand

    objConn = New MySqlConnection(strConnString)
    objConn.Open()

    Dim strSQL As String
    strSQL = "SELECT * FROM theTable WHERE status=" & theStatus & " ORDER BY created_on, status DESC;"

    Dim dtReader As MySqlDataReader
    objCmd = New MySqlCommand(strSQL, objConn)
    dtReader = objCmd.ExecuteReader()

    grdView.DataSource = dtReader
    grdView.DataBind()

    dtReader.Close()
    dtReader = Nothing

    objConn.Close()
    objConn = Nothing
End Sub

次に、上記の後に、次のように各行にLinkBut​​tonを作成します。

Sub builderGridView_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim lbtn As LinkButton = DirectCast(e.Row.FindControl("statusLink"), LinkButton)

        e.Row.Cells(1).Text = "TEST!"

        If lbtn.Text = 0 Then
            Dim lb As New LinkButton()
            lb.Text = "Accept"
            lb.CommandName = lbtn.CommandName
            lb.CommandArgument = lbtn.CommandArgument
            lb.Attributes.Add("class", "nounderline")
            lb.ForeColor = System.Drawing.Color.Green
            lb.Font.Bold = True
            lb.Font.Size = 12

            lb.OnClientClick = "location.href = '/page.aspx?ID=" & pageID & "&dbid=" & lb.CommandArgument & "&ACCEPT=yes'; return false;"
            e.Row.Cells(4).Controls.Add(lb)
        End If
    End If
End Sub

データベースから値(名前、アドレス、電子メールアドレスなど)を取得し、それを現在の行に配置するにはどうすればよいですか?

例:

(行をループするとき)

e.Row.Cells(1).Text = database("FName") & "<BR />" & database("LName") & "<BR />"...etc etc

最初の行の列では次のようになります。

Bob
Barker

DBから現在読み取られているものを取得するにはどうすればよいですか?

4

1 に答える 1

2

builderGridView_RowDataBoundイベントの塗りつぶしは、データベースの各行に対して処理されます。

e.Row.DataItemには、データベースのアイテムが含まれます

編集:より良い方法は

Using adap As New MySqlDataAdapter(objCmd)
    Dim table As New DataTable()
    adap.Fill(table)
grdView.DataSource = table;
grdview.DataBind();

アダプタはすべてのレコードをDataTableにロードします。

次に、e.Row.DataItemのタイプはDataRowになります

于 2012-09-11T20:16:00.777 に答える