gpt4 book ai didi

c# - 我如何引用嵌套在另一个 ListView 控件的项目模板中的 ListView 控件?

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:39 27 4
gpt4 key购买 nike

我有一个 listview 控件嵌套在另一个 listview 控件的项目模板中,我试图使用 .FindControl() 方法在代码隐藏中引用它,但它一直返回 null。让它工作后,我需要在内部 ListView 中引用一个 ComboBox。这是我到目前为止的位置:

ListView lsvTickets
ItemTemplate
Listview lsvActions
ItemTemplate
ComboBox cboAssignees

我正在使用以下代码尝试在代码后面引用:

var actions = (RadListView)lsvTickets.FindControl("lsvActions");

但是这将返回 null。我以为我只需要做这样的事情就可以达到最终预期的结果:

var assignees = (RadComboBox)lsvTickets.FindControl("lsvActions").FindControl("cboAssignees")

有人可以帮忙吗?我在这里做错了什么?这是对你们这些人有帮助的完整布局:

<rad:RadListView runat="server" ID="lsvTickets">
<ItemTemplate>
<div id="divContainer" class="divContainer">
<div id="divTicketHeader" class="divTicketHeader">
<asp:Table runat="server" ID="tblTicketHead" Width="100%" CellSpacing="0" CellPadding="5" HorizontalAlign="Center">
<asp:TableRow HorizontalAlign="Center">
<asp:TableCell Width="25%">
<asp:Label ID="Label1" runat="server" Text='<%#Eval("Subject") %>' Font-Bold="true" />
</asp:TableCell><asp:TableCell Width="25%">
<asp:Label ID="Label2" runat="server" Text='<%#Eval("Status.Key") %>' />
</asp:TableCell><asp:TableCell Width="25%">
<asp:Label ID="Label3" runat="server" Text='<%#Eval("Ticket.Reported_By") %>' />
</asp:TableCell><asp:TableCell Width="25%">
<asp:Label ID="Label4" runat="server" Text='<%#Eval("DateOpened") %>' />
</asp:TableCell></asp:TableRow></asp:Table></div>
<div id="divTicketBody" class="divComments">
<rad:RadListView runat="server" ID="lsvActions" DataSource='<%#Eval("TicketActions") %>'>
<ItemTemplate>
<center>
<div id="divAddComment" style="width: 500px;">
<div id="divCommentControls" style="margin: 8px 0px 8px 0px;">
<rad:RadComboBox runat="server" ID="cboStatus" DataSource='<%#GetStatuses() %>' DataTextField="Status" DataValueField="ID" /> <rad:RadComboBox runat="server" ID="cboAssignTo" DataSource='<%#GetAssignees() %>' DataTextField="Key" DataValueField="Value" />
</div>
<rad:RadTextBox runat="server" ID="txtComment" TextMode="MultiLine" Width="500" Height="100" CssClass="commentBox" /><br />
<div style="height: 35px;">
<div style="float:left"><asp:CheckBox ID="cbMakeITTicket" runat="server" Text="Convert to IT Support Ticket" /></div>
<div style="float:right; margin: 3px 0 0 0; "><rad:RadButton runat="server" ID="btnSubmit" Text="Submit" CssClass="buttonTag" /></div>
</div>
</div>
</center>
<div id="divComment" class="divComment">
<asp:Table runat="server" ID="tblComment" CellPadding="5">
<asp:TableRow>
<asp:TableCell Width="15%" HorizontalAlign="Center">
<rad:RadBinaryImage runat="server" ID="imgCommenter" Width="50" Height="50" /><br />
<asp:Label ID="Label5" runat="server" Text="[action author]" CssClass="commenterText" /><br />
<asp:Label ID="Label6" runat="server" Text='<%#Eval("Action_Date", "{0:MMM d, yyy hh:mm}") %>'
CssClass="commenterText"/><br />
</asp:TableCell><asp:TableCell>
<asp:Label ID="Label7" runat="server" Text='<%#Eval("Description") %>' />
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</div>
</ItemTemplate>
</rad:RadListView>
</div>
</div>
</ItemTemplate>
</rad:RadListView>
</asp:Content>

最佳答案

您正在寻找可能有很多行(因此是组合框实例行)的控件中的组合框 - 它不知道您在寻找哪一个。

显然我不知道你需要对组合框做什么,但你应该看看替代方法。看一下使用 lsvActions 的 OnItemDataBound 事件

然后添加代码,例如...

protected void lsvActions_ItemDataBound(object sender, GridItemEventArgs e)
{


if (e.Item is GridDataItem)
{
GridDataItem item = (GridDataItem)e.Item;
RadComboBox myCBO = (RadComboBox)item.FindControl("cboStatus")

myCBO.Visible = false;

}
}

...另外,这只是一个一般提示,我通常发现使用 OnNeedDataSource 加载 RadGrids 和 ListViews 可以省去很多麻烦。

希望对您有所帮助。

关于c# - 我如何引用嵌套在另一个 ListView 控件的项目模板中的 ListView 控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9744077/

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