C# 为什么我不能在ListView中选择项目?

C# 为什么我不能在ListView中选择项目?,c#,asp.net,listview,C#,Asp.net,Listview,我有一个带有MS Access数据源的ListView控件,现在我想从ListView中选择一个项目,数据将显示在文本框中,等等 如何在列表视图中选择项目?您的问题有点让人困惑。您是否询问在选择列表项时如何调用方法 谷歌搜索后应该有很多答案,但这里有一个简单的例子: 更改了OnSelectedIndex的ASP.NET列表框: <asp:ListBox runat="server" ID="lbListBox" OnSelectedIndexChanged="lbListBox_OnInd

我有一个带有MS Access数据源的ListView控件,现在我想从ListView中选择一个项目,数据将显示在文本框中,等等


如何在列表视图中选择项目?

您的问题有点让人困惑。您是否询问在选择列表项时如何调用方法

谷歌搜索后应该有很多答案,但这里有一个简单的例子:

更改了OnSelectedIndex的ASP.NET列表框:

<asp:ListBox runat="server" ID="lbListBox" OnSelectedIndexChanged="lbListBox_OnIndexChanged"/>

请尝试…请更改数据提供程序名称和连接字符串属性

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
   <form id="form1" runat="server">
   <div>
    <asp:ListView ID="ListView1" runat="server" DataKeyNames="PId" OnSelectedIndexChanging="ListView1_SelectedIndexChanging">
        <LayoutTemplate>
            <table>
                <tr>
                    <th>
                        Select
                    </th>
                    <th>
                        Product ID
                    </th>
                    <th>
                        Product Name
                    </th>
                    <th>
                        Unit Price
                    </th>
                </tr>
                <tbody>
                    <asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
                </tbody>
            </table>
        </LayoutTemplate>
        <ItemTemplate>
            <tr>
                <td>
                    <asp:LinkButton ID="lnkSelect" Text="Select" CommandName="Select" runat="server" />
                </td>
                <td>
                    <%# Eval("ProductID")%>
                </td>
                <td>
                    <%# Eval("ProductName")%>
                </td>
                <td>
                    <%# Eval("UnitPrice")%>
                </td>
            </tr>
        </ItemTemplate>
        <SelectedItemTemplate>
            <tr>
                <td>
                    <asp:LinkButton ID="SelectLinkButton" Text="Select" CommandName="Select" runat="server"
                        ForeColor="White" />
                </td>
                <td>
                    <%# Eval("PId")%>
                </td>
                <td>
                    <%# Eval("PName")%>
                </td>
                <td>
                    <%# Eval("Price")%>
                </td>
            </tr>
        </SelectedItemTemplate>
    </asp:ListView>
    <br />
    <asp:Label ID="MessageLabel" runat="server" Text="Label"></asp:Label>
</div>
</form>

在列表视图中,我无法选择项目。。。当我将鼠标指针定位到列表视图而不是列表框时,鼠标指针是一个文本选择,先生。在这种情况下,我会在ListView中添加一个额外的链接按钮:并在CodeBehind中添加一个新方法:protected void lkbCallMethod_Clickobject sender,EventArgs e{/*TODO*/}
protected void lbListBox_OnIndexChanged(object sender, EventArgs e)
{
    var listBoxText = lbListBox.SelectedItem.ToString();
    tbTextBox.Text = listBoxText;
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
   <form id="form1" runat="server">
   <div>
    <asp:ListView ID="ListView1" runat="server" DataKeyNames="PId" OnSelectedIndexChanging="ListView1_SelectedIndexChanging">
        <LayoutTemplate>
            <table>
                <tr>
                    <th>
                        Select
                    </th>
                    <th>
                        Product ID
                    </th>
                    <th>
                        Product Name
                    </th>
                    <th>
                        Unit Price
                    </th>
                </tr>
                <tbody>
                    <asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
                </tbody>
            </table>
        </LayoutTemplate>
        <ItemTemplate>
            <tr>
                <td>
                    <asp:LinkButton ID="lnkSelect" Text="Select" CommandName="Select" runat="server" />
                </td>
                <td>
                    <%# Eval("ProductID")%>
                </td>
                <td>
                    <%# Eval("ProductName")%>
                </td>
                <td>
                    <%# Eval("UnitPrice")%>
                </td>
            </tr>
        </ItemTemplate>
        <SelectedItemTemplate>
            <tr>
                <td>
                    <asp:LinkButton ID="SelectLinkButton" Text="Select" CommandName="Select" runat="server"
                        ForeColor="White" />
                </td>
                <td>
                    <%# Eval("PId")%>
                </td>
                <td>
                    <%# Eval("PName")%>
                </td>
                <td>
                    <%# Eval("Price")%>
                </td>
            </tr>
        </SelectedItemTemplate>
    </asp:ListView>
    <br />
    <asp:Label ID="MessageLabel" runat="server" Text="Label"></asp:Label>
</div>
</form>
using System;
using System.Collections.Generic;
using System.Linq; 
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;

public partial class _Default : System.Web.UI.Page
{
   protected void Page_Load(object sender, EventArgs e)
   {
       if (!Page.IsPostBack)
       {
          BindData();
       }
   }
   private void BindData()
   {
    string constr = "Data Source=Your Server;Database=Your DB;uid=User Name; pwd=Your Password;";
    string query = "SELECT PId, PName,Price FROM tblProducts";

    SqlDataAdapter da = new SqlDataAdapter(query, constr);
    DataTable table = new DataTable();

    da.Fill(table);

    ListView1.DataSource = table;
    ListView1.DataBind();
}

 protected void ListView1_SelectedIndexChanging(object sender, ListViewSelectEventArgs e)
 {
    ListView1.SelectedIndex = e.NewSelectedIndex;
    string pid = ListView1.SelectedDataKey.Value.ToString(); 
    MessageLabel.Text = "Selected Product ID: " + pid;
    BindData();
 }
}