- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试获取一个 gridview 来填充从数据库调用到我的 Label 的文本,如图所示 结果已经过测试并返回正确的名称
protected void Page_Load(object sender, EventArgs e)
{
DataTable t = DBProductLink.ListWithOptions(ProductId, LinkType, null);
TestList.DataSource = t ;
TestList.DataBind();
}
标签在 Gridview 中是这样创建的:
<asp:GridView ID="TestList" runat="server" OnRowDataBound="testDataBound" AutoGenerateColumns="false" DataKeyNames="Id">
<Columns>
<asp:TemplateField HeaderText="Sizes">
<asp:ItemTemplate>
<asp:Label ID="sizeLabel" runat="server" Text='<%# Eval("size") %>' />
</asp:ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
然后我尝试循环遍历 gridview 并使用 ondatarowbound 访问标签,但是在这个标签中它是空的。
protected void testDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType != DataControlRowType.DataRow)
return;
Label sizeLabel = e.Row.FindControl("sizeLabel") as Label;
sizeLabel.Text = "test";
}
我在同一页面上使用不同名称的另一个 gridview 上使用完全相同的设置,其中有 2 个下拉框和 2 个标签,但没有这个问题。有人对此有想法吗?另一个Gridview如下:
<asp:GridView ID="SearchList" runat="server" AutoGenerateColumns="False"
DataKeyNames="Id" OnRowDataBound="SearchList_RowDataBound"
OnRowCommand="SearchList_RowCommand" Width="100%" PageSize="20" >
<Columns>
<asp:BoundField DataField="Code" HeaderText="Code" SortExpression="Code" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:TemplateField HeaderText="Price" SortExpression="Price">
<ItemTemplate>
<robo:MoneyLabel ID="MoneyLabel2" runat="server"
Value='<%# Eval("Price") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Type">
<ItemTemplate>
<asp:Label ID="typeLabel" runat="server" Text='<%# Eval("Type") %>' />
<asp:HiddenField ID="productId" runat="server" Value='<%# Eval("Id") %>' />
<asp:HiddenField ID="isFabric" runat="server" Value='<%# Eval("IsFabric") %>' />
<asp:HiddenField ID="isOldWizard" runat="server" Value='<%# Eval("IsOldWizard") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Options/Color/Size">
<ItemTemplate>
<asp:LinkButton runat="server" ID="GetOptions" Text="Get Options" CausesValidation="false" CommandName="Options" />
<asp:Label ID="OptionLabel" Visible="false" runat="server" Text="Option: " />
<asp:DropDownList ID="ProductOptions" runat="server" Visible="false" />
<asp:Label ID="ColorLabel" Visible="false" runat="server" Text="Color: " />
<asp:DropDownList ID="RibbonColors" runat="server" Visible="false" AutoPostBack="true" />
<asp:Label ID="SizeLabel" Visible="false" runat="server" Text="Size: " />
<asp:DropDownList ID="RibbonSizes" runat="server" Visible="false" AutoPostBack="true" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Add">
<ItemStyle Width="60px" />
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" Text="Add" CommandName="Add" CommandArgument='<%# Eval("Id") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
.cs 是
protected void SearchList_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType != DataControlRowType.DataRow)
return;
int productId = (int)SearchList.DataKeys[e.Row.RowIndex].Value;
LinkButton GetOptions = e.Row.FindControl("GetOptions") as LinkButton;
DropDownList RibbonColors = e.Row.FindControl("RibbonColors") as DropDownList;
DropDownList RibbonSizes = e.Row.FindControl("RibbonSizes") as DropDownList;
DropDownList ProductOptions = e.Row.FindControl("ProductOptions") as DropDownList;
Label typeLabel = e.Row.FindControl("typeLabel") as Label;
HiddenField isFabric = e.Row.FindControl("isFabric") as HiddenField;
HiddenField isOldWizard = e.Row.FindControl("isOldWizard") as HiddenField;
ProductType typeValue = DBConvert.ToEnum<ProductType>(typeLabel.Text);
bool isFabricValue = Convert.ToBoolean(isFabric.Value.ToString());
bool isOldWizardValue = Convert.ToBoolean(isOldWizard.Value.ToString());
}
最佳答案
刚刚发现问题
你的标记是错误的,它很棘手......我承认
这个标签:<asp:ItemTemplate>
应该是 <ItemTemplate>
改变这个:
<asp:TemplateField HeaderText="Sizes">
<asp:ItemTemplate>
<asp:Label ID="sizeLabel" runat="server" Text='<%# Eval("size") %>' />
</asp:ItemTemplate>
</asp:TemplateField>
进入
<asp:TemplateField HeaderText="Sizes">
<ItemTemplate>
<asp:Label ID="sizeLabel" runat="server" Text='<%# Eval("size") %>' />
</ItemTemplate>
</asp:TemplateField>
这应该引发异常...但是,ItemTemplate
完全被忽略了
关于c# - e.Row.findcontrol() 在数据绑定(bind)后返回 null 但所有数据绑定(bind)字段都正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11570176/
我有一个下拉列表: 一个可爱的小家伙。我有一些代码可以找到它: DropDownList myControl1 = (DropDownList)Page.FindC
我有一个列出客户项目的中继器,其中一个是用于获取更多信息的按钮。当用户单击该按钮时,用户控件会立即出现在它的下方。我希望用户控件在再次单击按钮时关闭。我最初切换可见性服务器端,但我现在不能使用它,因为
我的页面,Default.aspx 继承自 BasePage.cs。 在基本页面中,我试图找到实际上位于 Default.aspx 中的控件 Label1。 var labelControl = (T
我正在处理一个继承基页的页面。 aspx 页面包含一个控件,该控件使用 xslt 将 xml 文档转换为 html 标记。在该文档中,我使用了以下内容: 我正在尝
我正在设置一个 GridView ,以便我可以选择多个事件并将它们的 EventID 添加到逗号分隔的字符串中。这将是一项订阅服务,因此我需要知道用户想要订阅哪些事件。 我使用模板字段添加了一个复选框
示例代码: var div = new HtmlGenericControl("div"); div.Controls.Add(new Literal() { ID = "litSom
在一个网站上,我只使用一个单一级别的母版页,在使用该母版的页面中,我可以这样做。Master.FindControl("controlName") 来访问控件。工作正常。 但是,在具有两个母版页级别的
我想在 DDL OnSelectedIndexChanged 事件之后在 griview 上找到控制。其中目标控件位于 DDL 所在的行索引上。 这是我的代码; protected void Page
出现以下错误 找到具有相同ID'ltlItemCode'的多个控件。 FindControl要求控件具有唯一的ID。 在页面加载时不会发生此错误,但是当我更改具有AutoPostBack =“true
在 page_Init 上,我创建了许多 UpdatePanel,并在这些 UpdatePanel 中创建了一个 Panel 。然后,我使用此面板进一步动态添加其他控件。例如,我在每个面板中添加了一些
我在面板内有一个中继器。 在这个中继器内我有另一个面板。在某些情况下,我想设置这个 panel.visibility = false。 在后面的代码中,我尝试在 OnItemDataBound 上找到
我有一个在页面加载时动态加载的用户控件: protected void Page_Load(object sender, EventArgs e) { MyControl ctl = (MyC
我有多个文本框,我想用相同的方法以编程方式填充它们。 ">
我有一个绑定(bind)到 DropDownList 的 GridView。当 DropDownList 的索引更改时,GridView 由 SQL 查询更新。 GridView 的单元格中的值被转换
两个异常(exception): 索引越界 FindControl 返回 null(假装或未检测到控件) cs 代码:(现在下拉列表只需要在编辑模式下填充) protected void GridVi
我有一个 Literal 控件,我正试图找到它以便我可以在其中插入文本。我有一个包含多个内容占位符的母版页。 Project Navigation 我不断收到“对象引用未设置到对象的
我有两种方法。第一个动态创建一个表,然后将该表添加到 PlaceHolder 中。 private void generateData(){ Table tbl = new Table();
我现在知道通常您可以使用以下方法获取文本输入的值: txtName.Text 但是因为我的输入是在 LoginView 内部,所以我使用 FindControl 是这样的: LoginView1.Fi
我正在尝试根据相关文本框来控制按钮状态。除前缀外,名称相同。文本框和按钮位于页面上的表格中。
我开发了一个网络仪表板,它具有嵌入控件内部的控件结构。在许多情况下,我有一个控件的 ID,需要处理实际的控件对象。因此,我使用了一个实用方法,一个递归的 FindControl 实现,它在 Page(
我是一名优秀的程序员,十分优秀!