开发者

how do i display the "On Offer" indicator when the product is on offer in the database of asp.net?

开发者 https://www.devze.com 2023-02-04 18:01 出处:网络
I need to displ开发者_C百科ay the \"on Offer\" indicator next to the product in the gridview if the product has a number \"1\" in the \"Offered\" column in the database. if it is zero, then don\'t dis

I need to displ开发者_C百科ay the "on Offer" indicator next to the product in the gridview if the product has a number "1" in the "Offered" column in the database. if it is zero, then don't display. is there some way to achieve that? thanks.

In my product listing page: Dim objCat As New Category Dim objProduct As New Product Dim i As Integer Dim boolError As Boolean = False

objCat.ID = CType(Request.QueryString("CatID"), Integer)

' get details of the category

objCat.GetDetails()

' Display the category name

lblCatName.Text = objCat.Name

lblCatName2.Text = objCat.Name

' Display the category description

lblCatDesc.Text = objCat.Description

 objCat.GetOfferedProducts()     

For i = 0 To gvProduct.Rows.Count - 1        
' Get the ProductId from the first cell        
 objProduct.ID = gvProduct.Rows(i).Cells(0).Text   

 Dim lblOffer As Label    
 lblOffer = CType(gvProduct.Rows(i).FindControl("lblOffer"), Label)   

   If objCat.Offered = "1" Then            
   lblOffer.Visible = True        
   Else            
  lblOffer.Visible = False         
   End If    

Next

gvProduct.DataSource = objCat.GetProducts()

gvProduct.DataBind()

in my category class: Public Sub GetOfferedProducts()

' Define a conection to database    
' Read connection string from the web.config file.  
  Dim strConn As String    
 strConn = ConfigurationManager.ConnectionStrings("AppDb").ToString   
 Dim conn As New SqlConnection(strConn)   

' Retrieve details of a given Category ID from the database    
  Dim strSql As String     
 strSql = "SELECT * FROM CatProduct cp INNER JOIN Product p " & _     
           "ON cp.ProductID=p.ProductID INNER JOIN Category c ON                       cp.CategoryID=c.CategoryID " & _         
     "WHERE cp.CategoryID=@CategoryID"   

' Define an Command object to execute the SQL statement

Dim cmd As New SqlCommand(strSql, conn)

' Add parameter to the SQL command

cmd.Parameters.AddWithValue("@CategoryID", ID)

' Define a data adapter to fetch data

Dim da As New SqlDataAdapter(cmd)

' Define a data set to hold the data fetched

Dim ds As New DataSet

' Open database connection

conn.Open()

da.Fill(ds, "CatProduct")

' Close the database connection

conn.Close()

If ds.Tables("CatProduct").Rows.Count <> 0 Then

Name = ds.Tables("CatProduct").Rows(0)("CatName")

Description = ds.Tables("CatProduct").Rows(0)("CatDesc") ImageFile = ds.Tables("CatProduct").Rows(0)("CatImage")

Offered = CType(ds.Tables("CatProduct").Rows(0)("Offered"), Integer) End If


I would hook up the gridview's OnRowDataBound in your aspx page:

<asp:gridview id="MyGridView"  
    autogeneratecolumns="true"
    allowpaging="true"
    onrowdatabound="MyGridView_RowDataBound" 
    runat="server">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Label runat="server" id="lblOffer"/>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>

  </asp:gridview>

Then in the code behind you could do something like this:

 void MyGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
  {
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
      var lbl = e.Row.FindControl("lblOffer");
      If objCat.Offered = "1" Then            
          lbl.Visible = True        
      Else            
          lbl.Visible = False         
      End If    
    }
  }

Hope that helps!!


There are various ways to make this happen. Basically, you're just looking to conditionally show/hide an element in the grid.

Which of the many ways to do this happens to be the best way entirely depends on how you're retrieving, binding to and displaying your data. You can put the logic in the business layer (a certain property is set or null based on business rules, etc.), in your data binding code (if you're looping through records for the display or something, such as in an ItemDataBound handler), in your display code (if you're just declaring everything in the aspx and just need to toss in an Eval and a conditional), etc.

0

精彩评论

暂无评论...
验证码 换一张
取 消