как установить текст метки внутри listview из исходного кода

#c# #asp.net #sql #asp.net-ajax

#c# #asp.net #sql #asp.net-ajax

Вопрос:

На самом деле я разрабатываю веб-шаблон с asp.net используя c # и мою строку подключения,:

 <connectionStrings>
<add name="NorthwindConnectionString"
connectionString="Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|SecurityTutorials.mdf;Integrated Security=True;User Instance=True" 
providerName="System.Data.SqlClient"/>
</connectionStrings>
  

и, используя приведенный ниже код из исходного кода, я подключился к базе данных:

 using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\SecurityTutorials.mdf;Integrated Security=True;User Instance=True"))
{
 conn.Open();
using (System.Data.SqlClient.SqlDataAdapter dad = new System.Data.SqlClient.SqlDataAdapter("SELECT [ProductID], [ProductName], [Discontinued] FROM [Alphabetical list of products]", conn))
        {
            System.Data.DataTable test = new System.Data.DataTable();
            dad.Fill(test);

            ListView1.DataSource = test;
            ListView1.DataBind();

        }
    } 
  

Я использую listview, и я хочу получить доступ к данным из базы данных, прежде чем привязывать данные с помощью ListView1.DataBind(); и переформатировать данные и установить их как label.text внутри listview. в настоящее время я использую приведенный ниже код для отображения данных метки:

 <td>
   <asp:Label ID="lblProdID" runat="server"
        Text='<%# Eval("ProductID") %>' />
</td>
<td>
   <asp:Label ID="lblProdName" runat="server"
        Text="<%# Eval("ProductName") %>" />
</td>
<td>
   <asp:Label ID="cbDiscontinued" runat="server"
        Text='<%# Eval("Discontinued") %>' />
</td>
  

но я хочу удалить <%# Eval(«ProductID») %> и два других, а также установить label.text из исходного кода.
ценю ваше внимание.

Ответ №1:

Используйте следующий обработчик событий в исходном коде:

 protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        // Display the e-mail address in italics.
        Label lblProdID = (Label)e.Item.FindControl("lblProdID");

        // Here, lblProdID contains your data ProductID as text, change to "My Text"
        lblProdID.Text = "My Text";

        DataRowView rowView = e.Item.DataItem as DataRowView;
        string myProductID = rowView["ProductID"].ToString();
        // Here, you can access your data
    }
}
  

Подключите этот обработчик событий к вашему listview:

 <asp:ListView ID="ListView1" runat="server" OnItemDataBound="MyListView_ItemDataBound" />
  

Ответ №2:

В ListView есть событие ItemDataBind, которое вызывается каждый раз, когда записи привязываются по дате к шаблону ListView. Создайте обработчик even и внутри него

Используйте e.Item.Свойство DataItem, чтобы получить ссылку на привязываемый объект, а затем продолжить и выполнить форматирование по своему усмотрению.