Avatar billede jdavid Nybegynder
14. marts 2004 - 23:55 Der er 11 kommentarer og
1 løsning

datediff vha sqlcommand /vb

Jeg har hentet en dato fra en tabel i en mssql base. Bruger datediff til at beregne forskellen i antal dage. Nu skal jeg bruge resultatet i en if struktur til at farve baggrunden i en celle i et datagrid grønt gult eller rødt alt efter hvor mange dage der er gået. Hvordan får jeg mulighed for at arbejde med det resultat der er kommet ud af datediff?

koden ser sådan ud

Dim myConnection As SqlConnection
Dim myCommand As SqlDataAdapter
myConnection = New SqlConnection("SERVER=WIN\db;database=db;uid=USER1; pwd=1234;")
  myCommand = New SqlDataAdapter("SELECT Cust_Name, MS_SQL_ID, DB_SW_TYPE, DB_Patch_Level, DATEDIFF(day, Patchtime, getdate()) AS Status FROM MS_SQL ORDER BY Cust_Name", myConnection)
            Dim ds As DataSet = New DataSet
            myCommand.Fill(ds)
            DataGrid1.DataSource = ds
        DataGrid1.DataBind()
Avatar billede jakobg Nybegynder
15. marts 2004 - 09:46 #1
Du laver en Procted function i din codebehind, som tager Status som paramter, og returnerer dét du nu en gang vil vise:

Protected Function GetStatus(ByVal Status As Integer) As String
        Select Case Status
            Case 0 To 10
                Return "green"
            Case 11 To 20
                Return "yellow"
            Case Else
                Return "red"
        End Select
    End Function

I din ASPX-side kalder du funktionen på denne måde, du skal bruge en template column i dit datagrid:
<Columns>
    <asp:TemplateColumn>
        <ItemTemplate>
            <%# GetStatus(Container.DataItem("Status")) %>
        </ItemTemplate>
    </asp:TemplateColumn>
</Columns>
Avatar billede jdavid Nybegynder
15. marts 2004 - 10:41 #2
kanon, takker!
Avatar billede jdavid Nybegynder
16. marts 2004 - 11:51 #3
jakobg> lige meget hvor jeg smider koden ind så funker det ikke. Skal jeg skrive det helt om?

koden:

<asp:datagrid id="DataGrid1" style="Z-INDEX: 111; LEFT: 200px; POSITION: absolute; TOP: 96px"
runat="server" Width="424px" ToolTip="Click on an item to see further information" CellPadding="1" CellSpacing="1" BorderColor="Black" BackColor="White" AllowPaging="True" AllowSorting="True"> <HeaderStyle Font-Bold="True" BackColor="Gray"></HeaderStyle>
<PagerStyle BackColor="Gray"></PagerStyle>
</asp:datagrid>
<asp:label id="Label6" style="Z-INDEX: 112; LEFT: 88px; POSITION: absolute; TOP: 176px" runat="server" Width="80px" ForeColor="White"></asp:label><asp:button id="Button3" style="Z-INDEX: 113; LEFT: 88px; POSITION: absolute; TOP: 232px" runat="server" Width="63px" Text="OK" Visible="False"></asp:button></form>
</body>
Avatar billede jakobg Nybegynder
16. marts 2004 - 13:42 #4
Så, nu skyder vi lige skarpt fra hoften: Kan du få følgende til at virke?

ASPX-side:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm10.aspx.vb" Inherits="BookingMaster.WebForm10"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
    <HEAD>
        <title>WebForm10</title>
        <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="FlowLayout">
        <form id="Form1" method="post" runat="server">
            <asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
                <Columns>
                    <asp:TemplateColumn>
                        <ItemTemplate>
                            <%# GetStatus(Container.DataItem("Status")) %>
                        </ItemTemplate>
                    </asp:TemplateColumn>
                    <asp:BoundColumn DataField="Cust_Name"></asp:BoundColumn>
                    <asp:BoundColumn DataField="MS_SQL_ID"></asp:BoundColumn>
                    <asp:BoundColumn DataField="DB_SW_TYPE"></asp:BoundColumn>
                    <asp:BoundColumn DataField="DB_Patch_Level"></asp:BoundColumn>
                </Columns>
            </asp:DataGrid>
        </form>
    </body>
</HTML>

VB, code-behind:
Public Class WebForm10
    Inherits System.Web.UI.Page

    Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not Page.IsPostBack Then
            Dim myConnection As Data.SqlClient.SqlConnection
            Dim myCommand As Data.SqlClient.SqlDataAdapter
            myConnection = New Data.SqlClient.SqlConnection("SERVER=WIN\db;database=db;uid=USER1; pwd=1234;")
            myCommand = New Data.SqlClient.SqlDataAdapter("SELECT Cust_Name, MS_SQL_ID, DB_SW_TYPE, DB_Patch_Level, DATEDIFF(day, Patchtime, getdate()) AS Status FROM MS_SQL ORDER BY Cust_Name", myConnection)
            Dim ds As DataSet = New DataSet
            myCommand.Fill(ds)
            DataGrid1.DataSource = ds
            DataGrid1.DataBind()
        End If
    End Sub

    Protected Function GetStatus(ByVal Status As Integer) As String
        Select Case Status
            Case 0 To 10
                Return "green"
            Case 11 To 20
                Return "yellow"
            Case Else
                Return "red"
        End Select
    End Function

    Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
        Select Case e.Item.ItemType
            Case ListItemType.AlternatingItem, ListItemType.Item
                DataGrid1.Items(e.Item.ItemIndex).BackColor = System.Drawing.Color.FromName(GetStatus(e.Item.DataItem("Status")))
        End Select
    End Sub
End Class

Jeg forstår ikke helt hvad du vil med dine labels og knapper nederst på siden?
Avatar billede jakobg Nybegynder
16. marts 2004 - 13:46 #5
Du vil nok lige stryge "bookingmaster" fra inherits på aspx-siden, og erstatte det med dit eget projektnavn. :)
Avatar billede jdavid Nybegynder
16. marts 2004 - 14:19 #6
Det kører ikke lige umiddelbart, jeg får en "index out of range" men jeg roder lige lidt inden jeg belemrer dig med koden.
knapperne/labels er til en søgefunktion der er nedprioriteret lige nu.
Avatar billede jakobg Nybegynder
16. marts 2004 - 15:45 #7
Kan du få det til at virke, hvis du fjerner DataBound-event'en?
Avatar billede jdavid Nybegynder
16. marts 2004 - 16:44 #8
Ja men undtaget farven. Cellens tekst er "green", "red" eller "yellow"
Jeg har prøver med backcolor=<%#getstatus(container.dataItem("Status"))%>
men det funker heller ikke. Jeg har prøvet at sætte den linie ind alle de steder hvor det virkede logisk.

her er koden:

Imports System
Imports System.Data
Imports System.Data.SqlClient

Public Class mssql
    Inherits System.Web.UI.Page

#Region " Web Form Designer Generated Code "

    'This call is required by the Web Form Designer.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.OleDbDataAdapter1 = New System.Data.OleDb.OleDbDataAdapter
        Me.OleDbInsertCommand1 = New System.Data.OleDb.OleDbCommand
        Me.OleDbConnection1 = New System.Data.OleDb.OleDbConnection
        Me.OleDbSelectCommand1 = New System.Data.OleDb.OleDbCommand
        Me.SqlSelectCommand1 = New System.Data.SqlClient.SqlCommand
        Me.SqlInsertCommand1 = New System.Data.SqlClient.SqlCommand
        Me.SqlDataAdapter1 = New System.Data.SqlClient.SqlDataAdapter
        '
        'OleDbDataAdapter1
        '
        Me.OleDbDataAdapter1.InsertCommand = Me.OleDbInsertCommand1
        Me.OleDbDataAdapter1.SelectCommand = Me.OleDbSelectCommand1
        '
        'OleDbInsertCommand1
        '
        Me.OleDbInsertCommand1.CommandText = "INSERT INTO view_steen(cust_name, db_sw_type, db_patch_level) VALUES (?, ?, ?); S" & _
        "ELECT cust_name, ms_sql_id, db_sw_type, db_patch_level FROM view_steen"
        Me.OleDbInsertCommand1.Connection = Me.OleDbConnection1
        Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("cust_name", System.Data.OleDb.OleDbType.VarChar, 10, "cust_name"))
        Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("db_sw_type", System.Data.OleDb.OleDbType.VarChar, 50, "db_sw_type"))
        Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("db_patch_level", System.Data.OleDb.OleDbType.VarChar, 10, "db_patch_level"))
        '
        'OleDbConnection1
        '
        Me.OleDbConnection1.ConnectionString = "User ID=Jan;Data Source=""WINSRV01\patchwatch"";Tag with column collation when poss" & _
        "ible=False;Provider=""SQLOLEDB.1"";Use Procedure for Prepare=1;Auto Translate=True" & _
        ";Persist Security Info=False;Workstation ID=NUMBERONE;Use Encryption for Data=Fa" & _
        "lse;Packet Size=4096"
        '
        'OleDbSelectCommand1
        '
        Me.OleDbSelectCommand1.CommandText = "SELECT cust_name, ms_sql_id, db_sw_type, db_patch_level FROM view_steen"
        Me.OleDbSelectCommand1.Connection = Me.OleDbConnection1
        '
        'SqlSelectCommand1
        '
        Me.SqlSelectCommand1.CommandText = "SELECT cust_name, ms_sql_id, db_sw_type, db_patch_level FROM view_steen"
        '
        'SqlInsertCommand1
        '
        Me.SqlInsertCommand1.CommandText = "INSERT INTO view_steen(cust_name, db_sw_type, db_patch_level) VALUES (@cust_name," & _
        " @db_sw_type, @db_patch_level); SELECT cust_name, ms_sql_id, db_sw_type, db_patc" & _
        "h_level FROM view_steen"
        Me.SqlInsertCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@cust_name", System.Data.SqlDbType.VarChar, 10, "cust_name"))
        Me.SqlInsertCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@db_sw_type", System.Data.SqlDbType.VarChar, 50, "db_sw_type"))
        Me.SqlInsertCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@db_patch_level", System.Data.SqlDbType.VarChar, 10, "db_patch_level"))
        '
        'SqlDataAdapter1
        '
        Me.SqlDataAdapter1.InsertCommand = Me.SqlInsertCommand1
        Me.SqlDataAdapter1.SelectCommand = Me.SqlSelectCommand1
        Me.SqlDataAdapter1.TableMappings.AddRange(New System.Data.Common.DataTableMapping() {New System.Data.Common.DataTableMapping("Table", "view_steen", New System.Data.Common.DataColumnMapping() {New System.Data.Common.DataColumnMapping("cust_name", "cust_name"), New System.Data.Common.DataColumnMapping("ms_sql_id", "ms_sql_id"), New System.Data.Common.DataColumnMapping("db_sw_type", "db_sw_type"), New System.Data.Common.DataColumnMapping("db_patch_level", "db_patch_level")})})

    End Sub
    Protected WithEvents Label1 As System.Web.UI.WebControls.Label
    Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
    Protected WithEvents Label4 As System.Web.UI.WebControls.Label
    Protected WithEvents Button1 As System.Web.UI.WebControls.Button
    Protected WithEvents Button2 As System.Web.UI.WebControls.Button
    Protected WithEvents Label5 As System.Web.UI.WebControls.Label
    Protected WithEvents Label2 As System.Web.UI.WebControls.Label
    Protected WithEvents DropDownList1 As System.Web.UI.WebControls.DropDownList
    Protected WithEvents OleDbDataAdapter1 As System.Data.OleDb.OleDbDataAdapter
    Protected WithEvents OleDbSelectCommand1 As System.Data.OleDb.OleDbCommand
    Protected WithEvents OleDbInsertCommand1 As System.Data.OleDb.OleDbCommand
    Protected WithEvents OleDbConnection1 As System.Data.OleDb.OleDbConnection
    Protected WithEvents SqlSelectCommand1 As System.Data.SqlClient.SqlCommand
    Protected WithEvents SqlInsertCommand1 As System.Data.SqlClient.SqlCommand
    Protected WithEvents SqlDataAdapter1 As System.Data.SqlClient.SqlDataAdapter
    Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
    Protected WithEvents Label6 As System.Web.UI.WebControls.Label
    Protected WithEvents Button3 As System.Web.UI.WebControls.Button

    'NOTE: The following placeholder declaration is required by the Web Form Designer.
    'Do not delete or move it.
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: This method call is required by the Web Form Designer
        'Do not modify it using the code editor.
        InitializeComponent()
    End Sub

#End Region
   

    Class myHyperlinkcolumn
        Implements ITemplate

        Sub Instantiatein(ByVal container As Control) Implements ITemplate.InstantiateIn
            Dim hlink As HyperLink = New HyperLink
            AddHandler hlink.DataBinding, AddressOf BindHyperLinkColumn
            container.Controls.Add(hlink)
        End Sub

        Public Sub BindHyperLinkColumn(ByVal sender As Object, ByVal e As EventArgs)
            Dim hlink As HyperLink = CType(sender, HyperLink)
            Dim container As DataGridItem = CType(hlink.NamingContainer, DataGridItem)
            Dim strVals As String
            strVals = "id=" & Convert.ToString(DataBinder.Eval( _
            (CType(container, DataGridItem)).DataItem, "MS_SQL_ID")) & _
            "&Cust_Name=" & Convert.ToString(DataBinder.Eval( _
            (CType(container, DataGridItem)).DataItem, "Cust_Name"))
            hlink.NavigateUrl = "details.aspx?" & strVals
            hlink.Text = "Show details"

        End Sub
    End Class

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not Page.IsPostBack Then

            If Session("LoggedIn") = "mssql" Then
                Label5.Text = "Logged In as Mssql user"
                Dim myConnection As SqlConnection
                Dim myCommand As SqlDataAdapter
                Dim strConnMssql As String = "SERVER=WINSRV01\patchwatch;DATABASE=patchwatch;uid=MSSQLUSER; pwd=MSSQL123;"
                myCommand = New SqlDataAdapter("SELECT Cust_Name, MS_SQL_ID, DB_SW_TYPE, DB_Patch_Level FROM MS_SQL ORDER BY Cust_Name", myConnection)
                Dim ds As DataSet = New DataSet
                myCommand.Fill(ds)

            End If

            If Session("LoggedIn") = "oracle" Then
                Label5.Text = "Logged In as Oracle user"
                Dim strConnOracle As String = "SERVER=WINSRV01\patchwatch;DATABASE=patchwatch;uid=oracleuser; pwd=ora123;"
            End If

            If Session("LoggedIn") = "sap" Then
                Label5.Text = "Logged In as SAP user"

                Dim myConnection As SqlConnection
                Dim myCommand As SqlDataAdapter
                myConnection = New SqlConnection("SERVER=WINSRV01\patchwatch;DATABASE=patchwatch;uid=SAPUSER1; pwd=SAP1234;")
                myCommand = New SqlDataAdapter("SELECT Cust_Name, MS_SQL_ID, DB_SW_TYPE, DB_Patch_Level, DATEDIFF(day, Patchtime, getdate()) AS Status FROM MS_SQL ORDER BY Cust_Name", myConnection)
                Dim ds As DataSet = New DataSet
                myCommand.Fill(ds)
                DataGrid1.DataSource = ds
                DataGrid1.DataBind()

                'forsøg
                Dim tempclm As New TemplateColumn
                tempclm.ItemTemplate = New myHyperlinkcolumn
                tempclm.HeaderText = "Customer"
                DataGrid1.Columns.Add(tempclm)
                DataGrid1.DataSource = ds.Tables(0)
                DataGrid1.DataBind()

            Else : Response.Redirect("login.aspx")
            End If
        End If
    End Sub
    Protected Function GetStatus(ByVal Status As Integer) As String
        Select Case Status
            Case 0 To 30
                Return "green"
            Case 31 To 60
                Return "yellow"
            Case Else
                Return "red"
        End Select
    End Function

    Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As _
    System.web.ui.webcontrols.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
        Select Case e.Item.ItemType
            Case ListItemType.AlternatingItem, ListItemType.Item
                DataGrid1.Items(e.Item.ItemIndex).BackColor = System.Drawing.Color.FromName(GetStatus _
              (e.Item.DataItem("Status")))
        End Select
    End Sub


    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Response.Redirect("dbselect.aspx")
    End Sub

    Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub OleDbDataAdapter1_RowUpdated(ByVal sender As System.Object, ByVal e As System.Data.OleDb.OleDbRowUpdatedEventArgs) Handles OleDbDataAdapter1.RowUpdated

    End Sub

    Private Sub DataGrid1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Dim myConnection As SqlConnection
            Dim myCommand As SqlDataAdapter
            myConnection = New SqlConnection("SERVER=WINSRV01\patchwatch;DATABASE=patchwatch;uid=SAPUSER1; pwd=SAP1234;")
            myConnection.Open()

            If TextBox1.Text = "Customer" Then
                myCommand = New SqlDataAdapter("SELECT * FROM MS_SQL WHERE Cust_Name LIKE " & TextBox1.Text & " ORDER BY Cust_Name", myConnection)
            End If
            If TextBox1.Text = "Software Type" Then
                myCommand = New SqlDataAdapter("SELECT * FROM MS_SQL WHERE DB_SW_TYPE LIKE " & TextBox1.Text & " ORDER BY Cust_Name", myConnection)
            End If
            If TextBox1.Text = "Operating System" Then
                myCommand = New SqlDataAdapter("SELECT * FROM MS_SQL WHERE OS_Type LIKE " & TextBox1.Text & " ORDER BY Cust_Name", myConnection)
            End If
            If TextBox1.Text = "Responsible" Then
                myCommand = New SqlDataAdapter("SELECT * FROM MS_SQL WHERE Responsible LIKE " & TextBox1.Text & " ORDER BY Cust_Name", myConnection)
            End If
            Dim ds As DataSet = New DataSet
            myCommand.Fill(ds)
            DataGrid1.DataSource = ds
            DataGrid1.DataBind()
            myConnection.Close()

        Catch

            Label6.Text = "No matches for " & TextBox1.Text
            Button3.Visible = True

        End Try

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Label6.Text = ""
        Button3.Visible = False

    End Sub
End Class


aspx koden

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="mssql.aspx.vb" Inherits="patchwatch.mssql"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
    <HEAD>
        <title>mssql</title>
        <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
        <meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
        <meta content="JavaScript" name="vs_defaultClientScript">
        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    </HEAD>
    <body bgColor="#000000" background="img-homeBG.gif" MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
            <asp:label id="Label1" style="Z-INDEX: 101; LEFT: 200px; POSITION: absolute; TOP: 56px" runat="server"
                Width="168px" ForeColor="White">MS SQL Info Area</asp:label><asp:label id="Label2" style="Z-INDEX: 102; LEFT: 8px; POSITION: absolute; TOP: 80px" runat="server"
                Width="184px" ForeColor="White">Search MSSQL database for</asp:label><asp:dropdownlist id="DropDownList1" style="Z-INDEX: 103; LEFT: 8px; POSITION: absolute; TOP: 96px"
                runat="server" Width="176px" ForeColor="Black" AutoPostBack="True">
                <asp:ListItem Value="Select table">Please select</asp:ListItem>
                <asp:ListItem Value="Customer Name">Customer</asp:ListItem>
                <asp:ListItem Value="Database Software Type">Software Type</asp:ListItem>
                <asp:ListItem Value="Operating System">Operating System</asp:ListItem>
                <asp:ListItem Value="Responsible">Responsible</asp:ListItem>
                <asp:ListItem Value="Status">Status</asp:ListItem>
            </asp:dropdownlist><asp:textbox id="TextBox1" style="Z-INDEX: 106; LEFT: 8px; POSITION: absolute; TOP: 144px" runat="server"
                Width="176px"></asp:textbox><asp:label id="Label4" style="Z-INDEX: 107; LEFT: 8px; POSITION: absolute; TOP: 128px" runat="server"
                ForeColor="White">Keyword</asp:label><asp:button id="Button1" style="Z-INDEX: 108; LEFT: 8px; POSITION: absolute; TOP: 176px" runat="server"
                Width="63" Text="Search"></asp:button>
            <asp:button id="Button2" style="Z-INDEX: 109; LEFT: 8px; POSITION: absolute; TOP: 232px" runat="server"
                Width="63" Text="Back"></asp:button><asp:label id="Label5" style="Z-INDEX: 110; LEFT: 384px; POSITION: absolute; TOP: 56px" runat="server"
                Width="152px">status</asp:label>
               
            <asp:datagrid id="DataGrid1" autogeneratecolumns="False" style="Z-INDEX: 111; LEFT: 200px; POSITION: absolute; TOP: 96px"
                runat="server" Width="600px" ToolTip="Click on an item to see further information" CellPadding="1"
                CellSpacing="1" BorderColor="Black" BackColor="White" AllowPaging="True" AllowSorting="True">
                <Columns>
                <asp:BoundColumn DataField ="Cust_Name" HeaderText = "Customer"></asp:BoundColumn>
                <asp:BoundColumn DataField ="MS_SQL_ID" HeaderText = "mssql ID"></asp:BoundColumn>
                <asp:BoundColumn DataField ="DB_SW_TYPE" Headertext = "Software Type"></asp:BoundColumn>
                <asp:BoundColumn DataField ="DB_Patch_Level" HeaderText = "Patch Level"></asp:BoundColumn>
                <asp:BoundColumn DataField ="Status" HeaderText = "Status"></asp:BoundColumn>
                <asp:TemplateColumn>
                <ItemTemplate>
                <%#getstatus(container.dataitem("Status"))%>
                </ItemTemplate>
                </asp:TemplateColumn>
                </Columns>
                <HeaderStyle Font-Bold="True" BackColor="Gray"></HeaderStyle>
                <PagerStyle BackColor="Gray"></PagerStyle>
            </asp:datagrid>
            <asp:label id="Label6" style="Z-INDEX: 112; LEFT: 88px; POSITION: absolute; TOP: 176px" runat="server"
                Width="80px" ForeColor="White"></asp:label><asp:button id="Button3" style="Z-INDEX: 113; LEFT: 88px; POSITION: absolute; TOP: 232px" runat="server"
                Width="63px" Text="OK" Visible="False"></asp:button></form>
    </body>
</HTML>
Avatar billede jakobg Nybegynder
16. marts 2004 - 19:14 #9
Det er din databound event, der er ged i:

Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
    Select Case e.Item.ItemType
        Case ListItemType.AlternatingItem, ListItemType.Item
          e.Item.BackColor = Color.FromName(GetStatus(e.Item.DataItem("intStatus")))
    End Select
End Sub
Avatar billede jakobg Nybegynder
16. marts 2004 - 19:16 #10
ASPX:

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="Eksperten.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
    <HEAD>
        <title>WebForm1</title>
        <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body>
        <form id="Form1" method="post" runat="server">
            <asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
                <Columns>
                    <asp:BoundColumn DataField="ID"></asp:BoundColumn>
                    <asp:BoundColumn DataField="strTitle"></asp:BoundColumn>
                    <asp:TemplateColumn>
                        <ItemTemplate>
                            <%# GetStatus(Container.DataItem("intStatus")) %>
                        </ItemTemplate>
                    </asp:TemplateColumn>
                </Columns>
            </asp:DataGrid>
        </form>
    </body>
</HTML>

VB:

Public Class WebForm1
    Inherits System.Web.UI.Page

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not Page.IsPostBack Then
            Trace.IsEnabled = True
            Dim tblData As New DataTable
            Dim rwRow As DataRow

            With tblData
                .Columns.Add(New DataColumn("ID", GetType(Integer)))
                .Columns.Add(New DataColumn("strTitle", GetType(String)))
                .Columns.Add(New DataColumn("intStatus", GetType(Integer)))
            End With

            For i As Integer = 1 To 10
                rwRow = tblData.NewRow
                rwRow.Item("ID") = i
                rwRow.Item("strTitle") = i.ToString & ": Hello World!"
                rwRow.Item("intStatus") = i * i
                tblData.Rows.Add(rwRow)
            Next

            DataGrid1.DataSource = tblData
            DataGrid1.DataBind()
        End If

    End Sub

    Protected Function GetStatus(ByVal Status As Integer) As String
        Select Case Status
            Case 0 To 10
                Return "green"
            Case 11 To 20
                Return "yellow"
            Case Else
                Return "red"
        End Select
    End Function

    Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
        Select Case e.Item.ItemType
            Case ListItemType.AlternatingItem, ListItemType.Item
                Trace.Warn(e.Item.ItemIndex)
                e.Item.BackColor = Color.FromName(GetStatus(e.Item.DataItem("intStatus")))
        End Select
    End Sub
End Class
Avatar billede jakobg Nybegynder
16. marts 2004 - 19:21 #11
Ovenstående eksempel har jeg ihvertfald fået til at virke, og det burde ikke være noget problem at skifte datakilden ud med din egen.
Avatar billede jdavid Nybegynder
16. marts 2004 - 21:10 #12
Ja, nu funker det. Jeg siger mange tak for hjælpen! Det var fedt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester