我收到以下错误
数据绑定方法(如Eval(),XPath()和Bind())只能在数据绑定控件的上下文中使用.
但我想要做的就是在ASP.NET REPEATER控件中
<% if ( Eval("Message").ToString() == HttpContext.Current.Profile.UserName) %>
<% { %>
<asp:ImageButton runat="server" etc.... />
<% } %>
Run Code Online (Sandbox Code Playgroud) 我有一个转发器,它与preRender绑定了项目.在Item模板中,每行都有一个复选框.这很好用.
我试图在项目模板绑定后遍历项目模板中的所有复选框.有没有办法做到这一点?
谢谢!
类型"x"在未引用的程序集中定义.您必须添加对程序集"abc123"的引用.
我有一个.NET 2.0 Web应用程序,引用我的程序集'abc123'.该程序集存在于GAC中,我已经验证它是正确的(相同)版本.除了一个.aspx页面之外,其余的应用程序都没有问题.有问题的页面有一个转发器,它将用户控件显示为其"字段"之一.在将类型y的列表绑定到转发器时,我向用户控件传递类型x的列表(y的属性),如下所示:
<uc1:usercontrol id="ucusercontrol " runat="server" myPublicUserControlProperty='<%#Eval("CollectionOfX") %>'/>
Run Code Online (Sandbox Code Playgroud)
在用户控件的属性集上,我将类型x的列表绑定到用户控件中的gridview.
需要注意的一件奇怪的事情是,这个报告在我的开发PC上工作正常,但在我部署之后在任何服务器上都没有.我的电脑是Windows XP,IIS6,VS2005.服务器是Windows Server 2003,IIS6.
我希望我解释得那么好.提前感谢您提供的任何见解.
如何格式化来自ASPX页面中的DataBinder.Eval语句的数据?
例如,我想在主页中以特定格式显示新闻项的发布日期.我正在使用ASP.NET 2.0 Repeater控件来显示新闻项列表.
这个代码是这样的:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1">
<HeaderTemplate><table cellpadding="0" cellspacing="0" width="255"></HeaderTemplate>
<ItemTemplate>
<tr><td >
<a href='/content/latestNews.aspx?id=<%#DataBinder.Eval(Container.DataItem, "id") %>'>
<asp:Label ID="lblNewsTitle" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "title") %>'></asp:Label>
</a>
</td></tr>
<tr><td>
<asp:Label ID="lblNewsDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "publishedDate"))%>'></asp:Label>
</td></tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate></asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
有没有办法我可以用DataBinder.Eval值作为参数调用自定义方法(如下所示)?
<asp:Label ID="lblNewsDate" runat="server" Text='<%# GetDateInHomepageFormat(DataBinder.Eval(Container.DataItem, "publishedDate")) )%>'></asp:Label>
Run Code Online (Sandbox Code Playgroud)
如果是,那么我在哪里编写GetDateInHomepageFormat方法?我尝试了代码隐藏页面,但是出现了运行时错误?如果这不可能,有没有办法进行内联格式化?
我目前遇到了单选按钮和分组的问题.我在转发器控件中有一个asp单选按钮.我将组名属性设置为"客户".页面加载时,单选按钮不会分组.它不是将id字段设置为组名,而是设置单选按钮的值字段.我知道我已经尝试在转发器控件之外设置单选按钮并且遇到了同样的问题.这里发生了什么?
ASPX
<asp:Repeater ID="repCustomers" runat="server">
<HeaderTemplate>
<table class="tableDefault" cellpadding="0" cellspacing="0" border="0" style="width: 383px; border: 0px !important">
<tr>
<th> </th>
<th>Cust. No.</th>
<th>Cust. Name</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:RadioButton ID="radCustomer" GroupName="Customer" runat="server" ValidationGroup="Customer" ToolTip='<%#Eval("CustomerNumber") %>' />
</td>
<td><%#Eval("CustomerNumber")%></td>
<td><%#Eval("Name") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
输出html
<table class="tableDefault" cellpadding="0" cellspacing="0" border="0" style="width: 383px; border: 0px !important">
<tr>
<th> </th>
<th>Cust. No.</th>
<th>Cust. Name</th>
</tr>
<tr>
<td>
<span title="111111"><input id="ctl00_PrimaryContent_repCustomers_ctl01_radCustomer" type="radio" name="ctl00$PrimaryContent$repCustomers$ctl01$Customer" value="radCustomer" /></span>
</td>
<td>111111</td>
<td>Jeremy's Test</td>
</tr>
<tr>
<td>
<span …
Run Code Online (Sandbox Code Playgroud) 我能想到的所有方式看起来都非常苛刻.这样做的正确方法是什么,或者至少是最常见的?
我正在从LINQ-to-SQL查询中检索一组图像,并将它和一些其他数据数据绑定到转发器.我需要在转发器中为每个项添加一个文本框,让用户更改每个图像的标题,与Flickr非常相似.
如何访问转发器控件中的文本框并知道该文本框属于哪个图像?
以下是转发器控件的外观,使用提交按钮更新Linq-to-SQL中的所有图像行:
替代文字http://casonclagg.com/layout.jpg
编辑:
这段代码有效
只要确保你不要像我一样在if(!Page.IsPostBack)之外绑定你的价值.哎呀.
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<div class="itemBox">
<div class="imgclass">
<a title='<%# Eval("Name") %>' href='<%# Eval("Path") %>' rel="gallery">
<img alt='<%# Eval("Name") %>' src='<%# Eval("Path") %>' width="260" />
</a>
</div>
<asp:TextBox ID="TextBox1" Width="230px" runat="server"></asp:TextBox>
</div>
</ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
并提交点击:
protected void Button1_Click(object sender, EventArgs e)
{
foreach (RepeaterItem item in Repeater1.Items)
{
TextBox txtName = (TextBox)item.FindControl("TextBox1");
if (txtName != null)
{
string val = txtName.Text;
//do something with val
}
}
}
Run Code Online (Sandbox Code Playgroud) 我在下面有以下转发器,我试图在后面的代码中找到lblA并且它失败了.标记下方是我的尝试:
<asp:Repeater ID="rptDetails" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><strong>A:</strong></td>
<td><asp:Label ID="lblA" runat="server"></asp:Label>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
Run Code Online (Sandbox Code Playgroud)
首先我试过,
Label lblA = (Label)rptDetails.FindControl("lblA");
Run Code Online (Sandbox Code Playgroud)
但是lblA是空的
然后我试过,
Label lblA = (Label)rptDetails.Items[0].FindControl("lblA");
Run Code Online (Sandbox Code Playgroud)
但是物品是0,即使m转发器包含1个itemtemplate
我有一个显示双重的转发器项目.偶尔双重似乎出现了像这个1165.833这样的3位小数.我试图通过将其包装在string.format方法中来强制它到两位小数,但它仍然是相同的:
<%# String.Format("{0:f2}",DataBinder.Eval(Container.DataItem, "pricerange").ToString())%>
Run Code Online (Sandbox Code Playgroud)
任何想法为什么?
我有一个Repeater控件绑定到Linq查询的结果.
我想获得ItemDataBound事件中某个数据源字段的值,但我不知道如何做到这一点.
好吧,我已经使用了几十次中继器而没有任何问题,但今天出现了一些问题.我有一个转发器,我正在订阅itemCommand事件,但是当我的命令运行时,页面会回发但事件不会被触发.
为了解决这个问题,我必须在每个回发上进行数据绑定.
我的中继器看起来像这样:
<asp:Repeater id="MyRepeater" runat="server" onitemcommand="MyRepeater_ItemCommand">
<ItemTemplate>
<li>
<asp:Label id="Label" runat="server" />
<asp:LinkButton id="LinkButton1" runat="server" commandname="Complete" commandargument='<%# Eval("MyID") %>' text='<%# Eval("Title") %>' />
</li>
</ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
和我的代码隐藏是这样的:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SetupPage();
}
}
private void SetupPage()
{
// Do other stuff
MyRepeater.DataSource = Repository.GetStuff()
MyRepeater.DataBind();
}
protected void MyRepeater_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
// Do all my stuff here
}
Run Code Online (Sandbox Code Playgroud)
除非我注释掉if(!IsPostBack)行,否则不会调用MyRepeater_ItemCommand.一旦被注释掉并且转发器在每个回发上获得数据绑定,它就可以正常工作.我已经在很多其他页面中完成了这个,但就此而言似乎没有用.
其他人遇到这种行为或有解决方案吗?
repeater ×10
asp.net ×9
c# ×4
.net-2.0 ×1
assemblies ×1
databinder ×1
double ×1
eval ×1
formatting ×1
itemcommand ×1
radio-button ×1
textbox ×1
wpf ×1