gpt4 book ai didi

c# - 在 ListView 的下拉列表中获取 selectedIndexChanged 上的 ListView 项的值

转载 作者:行者123 更新时间:2023-11-30 15:01:21 25 4
gpt4 key购买 nike

我在该 ListView 的每一行中都有一个 ListView 和 DropDownList。您可以在该 DropDownlist 中更改指定人员(DropDownList 显示来自 MySql 数据库的数据)。

换人的时候需要做一些数据库操作。为此,我需要知道人员在哪个 ListView 行上发生了更改,并且我需要知道该条目的值。

这是我的 aspx 文件:

<asp:ListView ID="manageAssigneesListView" runat="server" DataKeyNames="" OnItemDataBound="OnDataBound">            
<ItemTemplate>
<div class="summaryRow">
<asp:Label ID="customerId" runat="server"><%# Eval("customerId") %>&nbsp;</asp:Label>
<div style="width:200px; margin: 0px 5px; float: left;"><%# Eval("lastName") %>, <%# Eval("firstName") %></div>
<div style="width:120px; margin: 0px 2px; float: left;">Nr.</div>
<div style="width:200px; margin-left: 50px; float: right;">
<asp:DropDownList runat="server" ID="selectAssignee" Width="196" AppendDataBoundItems="true" OnSelectedIndexChanged="selectAssignee_OnSelectedIndexChanged" AutoPostBack="true">
</asp:DropDownList>
</div>
<div class="clear"></div>
</div>
</ItemTemplate>
</asp:ListView>

这是我的代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{
Helper.doAuth(Session, Response);

if (!IsPostBack)
{
// load all customers without assignee
MySqlCommand cmd = new MySqlCommand();
MySqlConnection con = new MySqlConnection();
con.ConnectionString = Helper.CONNECTION_STRING;
cmd.CommandText = "SELECT customerId, lastName, firstName, assignee FROM customer WHERE assignee IS NULL ORDER BY customerId DESC";
cmd.Connection = con;
con.Open();
MySqlDataAdapter sda = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds);
manageAssigneesListView.DataSource = ds;
manageAssigneesListView.DataBind();
con.Close();

}
}

protected void OnDataBound(object sender, ListViewItemEventArgs e)
{
DropDownList selectAssignee = (e.Item.FindControl("selectAssignee") as DropDownList);

MySqlCommand cmd = new MySqlCommand();
MySqlConnection con = new MySqlConnection();
con.ConnectionString = Helper.CONNECTION_STRING;
cmd.CommandText = "SELECT * FROM user where role = " + Helper.ROLE_SALESPERSON;
cmd.Connection = con;
con.Open();
MySqlDataAdapter sda = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds);
selectAssignee.DataSource = ds;
selectAssignee.DataTextField = "emailAdress";
selectAssignee.DataBind();
con.Close();
}


protected void selectAssignee_OnSelectedIndexChanged(object sender, EventArgs e)
{
DropDownList dropDownList = (DropDownList)sender;
ListViewItem listView = (ListViewItem)dropDownList.NamingContainer;

var test = listView.DataItem;
string test2 = listView.FindControl("customerId").ToString();

int rowIndex = (int)listView.DataItemIndex;
Label lblMessage = (Label)listView.FindControl("customerId");
}

我成功获取了行的 DataItemIndex 我更改了 DropDownList 的值,而且 DropDownlist 正在触发正确的 onSelectedIndexChanged,但我需要的是标签“customerId”的值,我不知道如何获取这个值。

提前致谢

最佳答案

您需要使用 FindControl 获取对 Label 的引用,然后使用它的 Text 属性:

ListViewItem item = (ListViewItem)dropDownList.NamingContainer;
Label lbltCustomerID = (Label) item.FindControl("customerId");
string customerID = lblCustomerID.Text;

顺便说一句,ListViewItem.DataItem 在回发时始终为 null

编辑:

你应该设置标签的Text,而不是

<asp:Label ID="customerId" runat="server">
<%# Eval("customerId") %>&nbsp;
</asp:Label>

这个

<asp:Label ID="customerId" runat="server"
Text='<%# Eval("customerId") %>' >
</asp:Label>

关于c# - 在 ListView 的下拉列表中获取 selectedIndexChanged 上的 ListView 项的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14415189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com