gpt4 book ai didi

c# - FindByName 或 FindByValue set.selected on dropdownlist 返回错误 Object reference not set to an instance of an object

转载 作者:行者123 更新时间:2023-11-30 22:26:48 24 4
gpt4 key购买 nike

我已经构建了一些绑定(bind)到 linq 数据源的下拉列表。当我在 gridview 上选择一行时,将执行查询,然后应根据查询中的数据设置下拉列表选择。当我这样做时,RegionListBox 工作正常,但是当我尝试使用 .FindByName 设置其他三个列表框的 .Selected 属性时,它们似乎尚未按照操作顺序填充。当我注释掉下面代码中的三个“.FindByName”行时,代码运行没有问题,但当然没有选择下拉值。当我使用我的 3 行 findbyname 执行代码时,它在第一行出错,对象引用未设置为对象的实例。 - 在列表的项目集合上设置 watch ,显示为空

问题是:当 regionlistbox 项目选择已经填充时,为什么 dropdownlist 项目集合是空的?我应该何时/何地设置选定项以便填充下拉列表项集合?

        protected void ItemGridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Page")
return;

if (e.CommandName == "EditItem")
{
string[] commandArgs = e.CommandArgument.ToString().Split(new char[] { ',' });

ItemGridView.SelectedIndex = -1;
ItemGridView.SelectedIndex = int.Parse(commandArgs[1]);
ServiceListBox.ClearSelection();
RegionListBox.ClearSelection();

editPanel.Visible = true;
//query your database and store the result set in a DataTable
DasLinqClassesDataContext db = new DasLinqClassesDataContext();
var ItemRowSelected = db.GetItemForUserById(Session["CSPAttuid"].ToString(), int.Parse(commandArgs[0])).FirstOrDefault();
if (ItemRowSelected != null)
{
if (ItemRowSelected.region != null)
{
string[] RegionIds;
RegionIds = ItemRowSelected.region.Split(',');
foreach (string element in RegionIds)
{
RegionListBox.Items.FindByValue(element.ToString()).Selected = true;
}
}


fieldTitle.Text = ItemRowSelected.title;
fieldNewOverview.Text = ItemRowSelected.overview;
lblPreviewTitle.Text = ItemRowSelected.title;
lblPreviewAudience.Text = ItemRowSelected.audience;
lblPreviewRegion.Text = ItemRowSelected.region_name;
lblPreviewService.Text = ItemRowSelected.service;
lblPreviewOverview.Text = ItemRowSelected.overview;
lblPreviewDocument.Text = ItemRowSelected.doc;
lblPreviewAuthor.Text = ItemRowSelected.author_name;
//urgent checkbox / image
if (ItemRowSelected.urgent == true)
{
urgentEditImage.Visible = true;
checkUrgent.Checked = true;
urgentViewImage.Visible = true;
}
else
{
urgentEditImage.Visible = false;
checkUrgent.Checked = false;
urgentViewImage.Visible = false;
}
//audio hyperlink/image
if (ItemRowSelected.audio != null)
{
audioEditImage.Visible = true;
audioViewImage.Visible = true;
fieldAudio.Text = ItemRowSelected.audio.ToString();
}
else
{
audioEditImage.Visible = false;
audioViewImage.Visible = false;
fieldAudio.Text = "";
}
//document
if (ItemRowSelected.doc != null)
{
fieldDocument.Text = ItemRowSelected.doc;
fieldDocLink.Text = ItemRowSelected.link;
}
//service
if(ItemRowSelected.service != null)
{
ServiceListBox.Items.FindByText(ItemRowSelected.service.ToString()).Selected = true;
}
//audience
if (ItemRowSelected.audience != null)
{
ServiceListBox.Items.FindByText(ItemRowSelected.audience.ToString()).Selected = true;
}
//author
if (ItemRowSelected.author != null)
{
ServiceListBox.Items.FindByText(ItemRowSelected.author.ToString()).Selected = true;
}
}
hiddenId.Value = ItemRowSelected.id.ToString();

}
}

下面是下拉列表的一些页面代码:

.....d>
<td width=707 colspan=2 valign=top style='width:530.25pt;border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>
<b>
<asp:DropDownList ID="ServiceListBox" runat="server"
DataSourceID="LinqDsService" DataTextField="name" DataValueField="id">
</asp:DropDownList><asp:ImageButton ID="AddNewServiceToDropdown" runat="server"
CausesValidation="False" ImageUrl="~/images/addButton.png" />
<asp:ModalPopupExtender ID="ModalPopAddNewServiceToDropdown" runat="server"
BackgroundCssClass="modalBackground" CancelControlID="btnCancelService"
DynamicServicePath="" Enabled="True" PopupControlID="panAddService"
TargetControlID="AddNewServiceToDropdown">
</asp:ModalPopupExtender>
</span>
</b>
</p>
</td>
</tr>
<tr>
<td valign=top
style='border-left:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;background:#FF6600;padding:0in 5.4pt 0in 5.4pt; border-top-style: none; border-top-color: inherit; border-top-width: medium; border-bottom-style: none; border-bottom-color: inherit; border-bottom-width: medium;'
class="style2">
<p class=MsoNormal>
<span style='font-family:"ClearviewATT","sans-serif"'>
<o:p>&nbsp;</o:p>
</span>
</p>
</td>
<td width=193 colspan=2 valign=top style='width:144.55pt;border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>
<span style='font-size:11.0pt;font-family:"ClearviewATT LT","sans-serif"'>Overview:<o:p>
</o:p>
</span>
</p>
</td>
<td width=707 colspan=2 valign=top style='width:530.25pt;border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; height: 52px; width: 602px;'>
<asp:TextBox ID="fieldNewOverview" TextMode="MultiLine" runat="server"
Width="600px"></asp:TextBox>
</p>
</td>
</tr>
<tr>
<td valign=top
style='border-left:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;background:#FF6600;padding:0in 5.4pt 0in 5.4pt; border-top-style: none; border-top-color: inherit; border-top-width: medium; border-bottom-style: none; border-bottom-color: inherit; border-bottom-width: medium;'
class="style2">
<p class=MsoNormal>
<span style='font-family:"ClearviewATT","sans-serif"'>
<o:p>&nbsp;</o:p>
</span>
</p>
</td>
<td width=193 colspan=2 valign=top style='width:144.55pt;border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>
<span style='font-size:11.0pt;font-family:"ClearviewATT LT","sans-serif"'>WIIFM (What&#8217;s In It For Me):<o:p>
</o:p>
</span>
</p>
</td>
<td width=707 colspan=2 valign=top style='width:530.25pt;border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>
<asp:TextBox ID="TextBox1" runat="server" Width="600px"></asp:TextBox>
</p>
</td>
</tr>
<!--- document number --->
<tr>
<td valign=top
style='border-left:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;background:#FF6600;padding:0in 5.4pt 0in 5.4pt; border-top-style: none; border-top-color: inherit; border-top-width: medium; border-bottom-style: none; border-bottom-color: inherit; border-bottom-width: medium;'
class="style2">
<p class=MsoNormal>
<span style='font-family:"ClearviewATT","sans-serif"'>
<o:p>&nbsp;</o:p>
</span>
</p>
</td>
<td width=193 colspan=2 valign=top style='width:144.55pt;border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>
<span style='font-size:11.0pt;font-family:"ClearviewATT LT","sans-serif"'>Document Number:<o:p>
</o:p>
</span>
</p>
</td>
<td width=707 colspan=2 valign=top style='width:530.25pt;border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>


<p class=MsoNormal>
<table>
<tr>
<td><span style='font-size:11.0pt;font-family:"ClearviewATT LT","sans-serif"'><asp:Label ID="Label3" runat="server" Text="Document Name"></asp:Label></span></td>


<td>
<asp:TextBox ID="fieldDocument" runat="server" Width="212px"></asp:TextBox>
</td>

</tr>
<tr>
<td><span style='font-size:11.0pt;font-family:"ClearviewATT LT","sans-serif"'><asp:Label ID="Label4" runat="server" Text="Hyperlink"></asp:Label></span></td>
<td><asp:TextBox ID="fieldDocLink" runat="server" Width="485px"></asp:TextBox></td></tr></table>
</p>
</td>
</tr>
<!--- author --->
<tr>
<td valign=top
style='border-left:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;background:#FF6600;padding:0in 5.4pt 0in 5.4pt; border-top-style: none; border-top-color: inherit; border-top-width: medium; border-bottom-style: none; border-bottom-color: inherit; border-bottom-width: medium;'
class="style2">
<p class=MsoNormal>
</p>
</td>
<td width=193 colspan=2 valign=top style='width:144.55pt;border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>
<span style='font-size:11.0pt;font-family:"ClearviewATT LT","sans-serif"'>Author:<o:p>
</o:p>
</span>
</p>
</td>
<td width=707 colspan=2 valign=top style='width:530.25pt;border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>
<asp:DropDownList ID="AuthorListBox" runat="server" DataSourceID="LinqDsAuthor"
DataTextField="name" DataValueField="id">
</asp:DropDownList> etc.....

这是 linq 数据源的一些页面代码:

 <!---begin linqdatasources--->
<asp:LinqDataSource ID="Region" runat="server"
ContextTypeName="das.DasLinqClassesDataContext" EntityTypeName=""
Select="new (id, name)" TableName="ref_regions" Where="active == @active">
<WhereParameters>
<asp:Parameter DefaultValue="true" Name="active" Type="Boolean" />
</WhereParameters>
</asp:LinqDataSource>
<asp:LinqDataSource ID="LinqDsService" runat="server"
ContextTypeName="das.DasLinqClassesDataContext" EntityTypeName=""
Select="new (id, name, active)" TableName="ref_services"
Where="active == @active">
<WhereParameters>
<asp:Parameter DefaultValue="true" Name="active" Type="Boolean" />
</WhereParameters>
</asp:LinqDataSource>
<asp:LinqDataSource ID="LinqDsAudience" runat="server"
ContextTypeName="das.DasLinqClassesDataContext" EntityTypeName=""
Select="new (id, name, type)" TableName="ref_audiences"
Where="active == @active">
<WhereParameters>
<asp:Parameter DefaultValue="true" Name="active" Type="Boolean" />
</WhereParameters>
</asp:LinqDataSource>
<br />
<asp:LinqDataSource ID="LinqDsAuthor" runat="server"
ContextTypeName="das.DasLinqClassesDataContext" EntityTypeName=""
Select="new (id, name)" TableName="ref_authors" Where="active == @active">
<WhereParameters>
<asp:Parameter DefaultValue="true" Name="active" Type="Boolean" />
</WhereParameters>
</asp:LinqDataSource>
<!---end linqdatasources--->

最佳答案

使用:

ServiceListBox.SelectedIndex = ServiceListBox.Items.IndexOf(ServiceListBox.Items.FindByText(ItemRowSelected.service.ToString()));

代替

ServiceListBox.Items.FindByText(ItemRowSelected.service.ToString()).Selected = true;

不知道为什么,但现在使用上面的新代码可以正常工作

关于c# - FindByName 或 FindByValue set.selected on dropdownlist 返回错误 Object reference not set to an instance of an object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11587312/

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