我在中继器控件上有一个 DropDownList 以及一个按钮。
当我想启用该按钮时,该按钮将被禁用,直到在 DropDownList 上选择了一个有效的项目。不幸的是,我似乎无法做到。
通过以下方式找到转发器:(.As() 方法是 (object as T) 的扩展方法,只是使转换更容易)
sender.As<Control>().NamingContainer.Parent.As<Repeater>()
Run Code Online (Sandbox Code Playgroud)
然而,我回来的中继器对我没有帮助,因为 FindControl(string name) 函数没有返回任何东西 - 并且在观察窗口中没有显示任何有用的东西。
那么,如何从转发器上另一个项目的事件(在本例中为 DropDown_SelectedIndexChanged)在转发器上获取同级控件(在本例中为 ImageButton)?
编辑
我终于解决了
sender.As<ImageButton>().NamingContainer.As<RepeaterItem>().FindControl("ControlName")
Run Code Online (Sandbox Code Playgroud) 我不熟悉asp.net转发器控件.我在转发器中有两列,数量和sku.单击按钮时,我想循环遍历转发器中的行,并将每个数量和sku传递给方法.你如何在中继器中获得这些信息?
我的asp.net webform中有一个转发器.在repater的"ItemTemplate"中,我添加了一个asp:按钮.我在按钮的"OnClientClick"事件上写下面的代码.
//This is javascript function
function DeleteGroup(groupID){
return confirm('Do you want to delete ' + groupID);
//This is asp.net page code<br>
<asp:Button runat="server" ID="btnDelete" Text="Delete"
OnClientClick="
return DeleteGroup(<%# DataBinder.Eval(Container.DataItem, "GrupID") %>);
" />
Run Code Online (Sandbox Code Playgroud)
我尝试了许多OnClientClick的变种,但我不能成功.
如何将从数据库中检索到的"GoupID"值传递给javascript函数"DeleteGroup"?
我在 aspx 页面上嵌套了转发器。在外部转发器中,我显示了一个产品列表,在内部转发器中,我显示了与每个产品相关联的附加选项列表。内部转发器包含一个复选框、文本框、标签和其他东西。当用户选择内部转发器中的复选框时,我想在外部转发器中找到控件。为了处理这个问题,我使用以下代码。
<asp:Repeater ID="OuterRepeater" runat="server"
onitemdatabound="OuterRepeater_ItemDataBound" >
<ItemTemplate>
<asp:Label ID="CodeLabel" runat="server" Text='<%# Eval("Code") %>'></asp:Label>
<asp:Repeater ID="InnerRepeater" runat="server" OnItemCreated="InnerRepeater_ItemCreated">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true"/>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
......
.......
</ItemTemplate>
</asp:Repeater>
......
......
</ItemTemplate>
</asp:Repeater>
protected void InnerRepeater_ItemCreated(object sender, RepeaterItemEventArgs e)
{
RepeaterItem ri = (RepeaterItem)e.Item;
if (ri.ItemType == ListItemType.Item || ri.ItemType == ListItemType.AlternatingItem
)
{
CheckBox cb = ri.FindControl("CheckBox1") as CheckBox;
cb.CheckedChanged += new EventHandler(CheckBox1_CheckedChanged);
}
}
private void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
CheckBox cb = (CheckBox)sender;
if …
Run Code Online (Sandbox Code Playgroud) 我已经阅读了很多关于gridview和repeater之间差异的文章.我开始知道gridview模式是固定的,并且,转发器可以提供自定义的HTML标记.如果我没有错,我们还可以通过添加模板字段和放置具有自定义设计的表来自定义HTML标记.在那些表格中,我们可以放置标签和其他.net控件,可以得到我们想要的任何东西.那么为什么要使用转发器控制呢?
我很困惑在哪种情况下它可以优先于gridview.
这是我的代码
var q = from a in bh
join b in hr on a.HotelCode equals b.hotelCode
select new
{
a.HotelCode,
a.ImageURL_Text,
a.HotelName,
a.StarRating,
a.HotelAddress,
a.Destination,
a.Country,
a.HotelInfo,
a.Latitude,
a.Longitude,
b.totalPrice,
b.totalPriceSpecified,
b.totalSalePrice,
b.totalSalePriceSpecified,
b.rooms
};
//rptHotels.DataSource = getres.availableHotels;
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = q;
objPds.AllowPaging = true;
objPds.PageSize = 10;// Convert.ToInt32(ddlPageNo.SelectedValue);
objPds.CurrentPageIndex = CurrentPage;
lblCurrentPage.Text = "Page: " + (CurrentPage + 1).ToString() + " of "
+ objPds.PageCount.ToString();
// Disable Prev or Next buttons if necessary
cmdPrev.Enabled = …
Run Code Online (Sandbox Code Playgroud) 我有一个repeater
控件如下所示.它有一个textbox
控件.当save button
被点击时,我需要从文本框中的文字更新.我有以下代码; 但是当我拿到文本框文本时,它给了我旧的价值.
我们如何获得更新的文本?
代码背后
protected void Save_Click(object sender, EventArgs e)
{
foreach (RepeaterItem item in repReports.Items )
{
if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem )
{
string updatedEmail = ((TextBox)item.Controls[5]).Text;
string originalEmail = ((HiddenField)item.Controls[7]).Value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
控制标记
<div class="repeaterTableBorder">
<asp:Repeater ID="repReports" runat="server">
<ItemTemplate>
<div id="repeaterIdentifier" class="repeaterIdentifier">
<div class="reportTitle">
<%# Eval("ReportName") + ":"%>
<asp:HiddenField ID="hdnLastChangeTime" runat="server" Value= '<%# ((DateTime)Eval("RecordSelectionTime")).ToString("MM/dd/yyyy hh:mm:ss.fff tt")%>' />
<asp:HiddenField ID="hdnReportID" runat="server" Value='<%# Eval("ReportTypeCode")%>' />
</div>
<div class="reportFrequency"> …
Run Code Online (Sandbox Code Playgroud) 我在转发器中使用隐藏字段并尝试将其与menuid绑定,以便我可以从服务器端检索menuid.
但不知何故,我得到以下错误
Server Tag is not well formed
Run Code Online (Sandbox Code Playgroud)
我在转发器中使用的隐藏字段如下
<ul class="navBar" id="jsddm">
<asp:Repeater ID="rptHeaderMenu" runat="server">
<ItemTemplate>
<li>
<a href="<%#Eval("MENU_URL") %>"><%#Eval("MENU_NAME") %></a>
Hidden Filed => <asp:HiddenField ID="hFiledHdrMenuId" runat="server" Value="<%#Eval("MENU_ID") %>" />
<asp:Repeater ID="rptChildMenu" runat="server">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<a href="<%#Eval("MENU_URL") %>"><%#Eval("MENU_NAME") %></a>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
Run Code Online (Sandbox Code Playgroud) 有没有办法modelData
从视图委托(特别是中继器)访问。
我尝试使用单独的属性并尝试通过它访问它,model.modelData
但这都不起作用。
请参阅下面的代码快照。
提前致谢。
Component
{
id: comp_1
Rectangle
{
color: "green"
width: 200
height: 200
}
}
Component
{
id: comp_2
Rectangle
{
color: "red"
width: 200
height: 200
Text
{
anchors.fill: parent
text: modelData
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
}
}
function getDelegate(itemName)
{
if(itemName === "comp1")
return comp_1;
else
return comp_2;
}
Row
{
Repeater
{
id: repeat
model: ["comp1", "comp2"]
Loader
{
sourceComponent: getDelegate(modelData)
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Select2和jQuery表单转发器(https://github.com/DubFriend/jquery.repeater)
我已经在google /上搜索了2天,但似乎无法让它工作.
include jquery/select2.js/jquery.repeater.js
var form = $('#form');
form.find('select').select2();
form.repeater({
show: function () {
$(this).show(function(){
form.find('select').select2('destroy').select2();
});
},
hide: function (remove) {
$(this).hide(remove);
}
});
Run Code Online (Sandbox Code Playgroud)
问题是jQuery.repeater克隆了div标签,其中input2已经初始化并且已经更改了DOM,因此jQuery.repeater会复制更改的DOM.我试图在调用重复动作之前销毁select2,但是dindt也可以工作.