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>

我需要评估的领域是状态。我需要找出状态是yes还是no。如果它不是,那么我需要将其设置为用户能够将其更改为yes的链接。

网格视图由以下代码填充:

    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 回答