Click here to Skip to main content
15,903,175 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Actually i'm developing template using asp.net and c#.
i'm using listview at my ascx page and my ItemTemplate is as below:

<ItemTemplate>
<tr style="background-color:#FFF8DC;color: #000000;">
    <td>
        <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" CausesValidation="false" OnClientClick="return confirm('Are you sure you want to delete this Product Details?');" />
        <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" CausesValidation="True" />
    </td>
    <td>
        <asp:Label ID="EmpIDLabel" runat="server" Text='<%# Eval("EmpID") %>' />
    </td>
    <td>
        <asp:Label ID="EmpNameLabel" runat="server" Text='<%# Eval("EmpName") %>' />
    </td>
    <td>
        <asp:Label ID="DepartmentLabel" runat="server" Text='<%# Eval("Department") %>' />
    </td>
    <td>
        <asp:Label ID="AgeLabel" runat="server" Text='<%# Eval("Age") %>' />
    </td>
    <td>
        <asp:Label ID="AddressLabel" runat="server" Text='<%# Eval("Address") %>' />
    </td>
</tr>
</ItemTemplate>


and i retrieve the data from the database in ascx code behind as bellow:

public DataTable GetEmployee(string query)
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString);
    SqlDataAdapter ada = new SqlDataAdapter(query, con);
    DataTable dtEmp = new DataTable();
    ada.Fill(dtEmp);
    return dtEmp;
}


and also i bind the data in ascx code behind as follow:

private void BindLVP(string SortExpression)
{
    string UpdateQuery = "Select * from Employee" + SortExpression;
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString);
    hid_UpdateQTP.Value = UpdateQuery;

    lvProduct.Items.Clear();
    lvProduct.DataSource = GetEmployee(UpdateQuery);
    lvProduct.DataBind();
}


my question is how i can delete the <%# Eval("EmpID") %> and all the other label text like this in ItemTemplate and change the label.text in ItemTemplate from the code behind, i mean pass the data of the database to these label from code behind.
appreciate your consideration.
Posted

ON ItemDataBound this event will run for each row of the listview.

And you can modify the data for each row and can access controls of each row.

check this exapmle:

VB
If (e.Item.ItemType = ListViewItemType.DataItem) Then
               Dim divCatHeader = e.Item.FindControl("divCatHeader")

               Dim lblWeekNbrWeekYr As Label = CType(e.Item.FindControl("lblWeekNbrWeekYr"), Label)
               If catg_cnt = 3 Then
                   divCatHeader.Visible = True
                   catg_cnt = 1
               Else
                   catg_cnt = catg_cnt + 1
               End If

               If (sales_unit = "sales") Then
                   lblWeekNbrWeekYr.text = "Week " & week_nbr & " FYE " & week_yr & " Sales"
               Else
                   lblWeekNbrWeekYr.Text = "Week " & week_nbr & " FYE " & week_yr & " Units"
               End If
           End If
 
Share this answer
 
thanks all for the reply, i have used the itemDataBound event of the listview as bellow:
<asp:listview id="lvProduct" runat="server" onitemdatabound="lvProduct_ItemDataBound" >
</asp:listview>

then at the code behind i have get the data from database and pass it to the label in listview.
protected void lvProduct_ItemDataBound(object sender, ListViewItemEventArgs e)
   {
       if (e.Item.ItemType == ListViewItemType.DataItem)
       {
           Label EmpIDLabel = (Label)e.Item.FindControl("EmpIDLabel");
           System.Data.DataRowView rowView = e.Item.DataItem as System.Data.DataRowView;
           EmpIDLabel.Text = rowView["EmpID"].ToString();
       }
   }
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900