1

我有一个这样的存储过程:

ALTER procedure [dbo].[fetchkey]
@carid nvarchar(50) =null
as
begin
 select t.TBarcode, t.Status,[dbo].[keyloc](t.status,@carid) as 'keylocation'
 from Transaction_tbl t 
 where t.TBarcode=@carid
end

我也有这样的功能:

ALTER function [dbo].[keyloc](@status numeric(18,2),@cardID VARCHAR(50)) RETURNS varchar(50)
as 
begin 
  @Ename nvarchar(50)
 , @keylocation  Varchar(50)

 if @status=0 
begin 
 select @keylocation= 0 
end
 return @keylocation
end

在执行我的存储过程时,我会这样:

TBarcode             Status      keylocation
53012364813          0             0

我正在将此数据直接填充到数据网格视图中,这里是我的 vb.net 代码

Dim cmd As New SqlCommand("fetchkey", con.connect) 
cmd.CommandType = CommandType.StoredProcedure 
cmd.Parameters.Add("@carid", SqlDbType.Int).Value = carid     
da.SelectCommand = cmd
da.Fill(ds)
DGVDashBoard.DataSource = ds.Tables(0).    

如果我像这样绑定,在数据 grideviw 中我得到 3 列。在数据网格视图中,我只想显示 Tbarcode 值和状态值。由于 keylocation 0,我还想以红色显示特定的数据网格视图行。我怎么能做到这一点。如果有人知道该怎么做,请帮助我。

4

1 回答 1

1

在没有看到网格视图的 html 的情况下,我只能提供建议。

如果您只想使用数据集中的一些列并具有条件格式,那么您需要在 Girdview 的RowDataBound事件中进行一些处理。

我建议这样做:

    Protected Sub YourGridView_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles YourGridView.RowDataBound
        Dim row As GridViewRow = e.Row
        Dim currentRow As System.Data.DataRow = CType(row.DataItem, System.Data.DataRow)

        If row.RowType = DataControlRowType.DataRow Then
            If currentRow("keylocation") = 0 Then
                row.Style.Add("background", "red")
                row.Style.Add("color", "white")
            End If

            CType(row.FindControl("TBarcodeLabel"), Label).Text = currentRow("TBarcode")
            CType(row.FindControl("StatusLabel"), Label).Text = currentRow("Status")
        End If
    End Sub

此代码假定您有一个网格视图,其中Label在可以填充的行模板中的某处添加了两个控件。

它看起来像这样:

<asp:GridView ID="YourGridView" runat="server">
    <asp:TemplateField ItemStyle-HorizontalAlign="Center" ItemStyle-Width="50">
        <ItemTemplate>
            <asp:Label ID="TBarcodeLabel" runat="server"></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField ItemStyle-HorizontalAlign="Center" ItemStyle-Width="50">
        <ItemTemplate>
            <asp:Label ID="StatusLabel" runat="server"></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
</asp:GridView>

通过这种方式,您正在处理行的填充,因此可以对它们进行任何您想要的格式化,包括删除列。

于 2013-07-25T14:41:15.353 回答