1

新しいレコードを行に配置するたびにデータフィールドを評価できるかどうか疑問に思っていますか?

私のgridviewコードはこれです:

<asp:Panel ID="pnlGrid" runat="server">
    <div class="left_main_container" style="margin-bottom:20px;">
        <asp:GridView ID="grdView" runat="server" CssClass="GridViewStyle"
            AutoGenerateColumns="False" GridLines="None" Width="100%">
            <Columns>
                <asp:BoundField DataField="id" Visible="False" />
                <asp:BoundField DataField="theName" HeaderText="Name" />
                <asp:BoundField DataField="status" HeaderText="Status" />
            </Columns>
            <RowStyle CssClass="RowStyle" />
            <EmptyDataRowStyle CssClass="EmptyRowStyle" />
            <PagerStyle CssClass="PagerStyle" />
            <SelectedRowStyle CssClass="SelectedRowStyle" />
            <HeaderStyle CssClass="HeaderStyle" />
            <EditRowStyle CssClass="EditRowStyle" />
            <AlternatingRowStyle CssClass="AltRowStyle" />
        </asp:GridView>
    </div>
</asp:Panel>

評価する必要があるフィールドはステータスです。ステータスが「はい」か「いいえ」かを確認する必要があります。いいえの場合、ユーザーがはいに変更できるようにするためのリンクにする必要があります。

グリッドビューには、次のコードが入力されます。

    Dim objConn As MySqlConnection
    Dim objCmd As MySqlCommand

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

    Dim strSQL As String
    strSQL = "SELECT id, status, " & _
                "CONCAT(' ', first_name, last_name) AS theName " & _
             "FROM(builder_requests) " & _
             "ORDER BY status, id 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

どんな助けでも素晴らしいでしょう!

4

1 に答える 1

2

私は、この種のことを行うために、コードビハインドでTemplateFieldと関数を使用するのが好きです。

ステータスフィールドはブール値ではなく文字列フィールドであると想定していますが、そうでない場合はお知らせください。例を調整できます。

に置き換えてくださいBoundField...

マークアップ:

        <asp:TemplateField>
            <ItemTemplate>
                <%# Eval("status")%>&nbsp;
                <asp:LinkButton ID="cmdChangeStatus" runat="server" CommandName="ChangeStatusToYes" CommandArgument='<%# Eval("id") %>'
                    Visible='<%# SetChangeStatusVisibility(Eval("status")) %>'>Change to Yes</asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>

そして、関数の背後にコードを追加します...

コード:

Protected Function SetChangeStatusVisibility(status As Object) As String
    Dim strStatus As String = status.ToString()
    If strStatus = "no" Then
        Return "True"
    Else
        Return "False"
    End If
End Function

次に、GridView.RowCommandイベントを処理して、CommandArgumentのid値に基づいてステータス値を変更できます:)

于 2012-08-15T13:47:02.680 に答える