我只是试图在客户端(使用javascript / jquery)上设置位于RadListView的项目模板内的telerik RadButton的复选框。
RadListView:
<telerik:RadListView runat="server"
ID="parameterList"
OnNeedDataSource="parameterList_NeedDataSource">
<ItemTemplate>
<tr>
<td>
<telerik:RadButton ToggleType="CheckBox"
ButtonType="LinkButton"
runat="server"
ID="chkParameterType"
AutoPostBack="False"
Text='<%# Eval("Description") %>
CssClass='<%# Eval("ParameterName") + "_button" %>'>
<ToggleStates>
<telerik:RadButtonToggleState PrimaryIconCssClass="rbToggleCheckboxChecked"/>
<telerik:RadButtonToggleState PrimaryIconCssClass="rbToggleCheckbox" />
</ToggleStates>
</telerik:RadButton>
</td>
</tr>
</ItemTemplate>
</telerik:RadListView>
我的jquery尝试是首先尝试使用this post中指示的telerik的库
var listView = $find('<%= parameterList.ClientID %>');
var txbClientObject = $telerik.findControl(listView.get_element().parentNode,
"chkParameterType").get_value()
var current = txbClientObject.get_value();
但是txbClientObject
回来时身份不明,所以current
与cannot read property of null
分开
我也尝试过在直接jquery中按类名查找按钮。我对此感到担心,因为我相信在不同的浏览器中渲染可能会有所不同。
var button = $("." + name + "_button > input"); //"name" is parameterName
button.prop("checked", true);
这不会出错,并通过它进行调试,可以找到按钮(或跨度),但是也无法选中该框。
关于我在做什么错的任何想法吗?
参考方案
您运行此代码的事件是什么?它必须至少是Sys.Application.Load事件,否则控件实例可能仍未定义。
另外,在Text属性中还有一个附加的%>
会破坏编译。
然后,findControl()将为您提供控件实例,您无需在那里调用get_value()。
您应该考虑的是所需的按钮,因为ListView可以有多个项目,这将为您提供第一个项目。
因此,这对我有用:
<telerik:RadListView runat="server"
ID="parameterList"
OnNeedDataSource="parameterList_NeedDataSource">
<ItemTemplate>
<tr>
<td>
<telerik:RadButton ToggleType="CheckBox"
ButtonType="LinkButton"
runat="server"
ID="chkParameterType"
AutoPostBack="False"
Text='<%# Eval("Description") %>'
CssClass='<%# Eval("ParameterName") + "_button" %>'>
<ToggleStates>
<telerik:RadButtonToggleState PrimaryIconCssClass="rbToggleCheckboxChecked"/>
<telerik:RadButtonToggleState PrimaryIconCssClass="rbToggleCheckbox" />
</ToggleStates>
</telerik:RadButton>
</td>
</tr>
</ItemTemplate>
</telerik:RadListView>
<asp:Button ID="Button1" Text="get first button" OnClientClick="getFirstButton(); return false;" runat="server" />
<script>
function getFirstButton() {
var listView = $find('<%= parameterList.ClientID %>');
var txbClientObject = $telerik.findControl(listView.get_element().parentNode,
"chkParameterType");
var current = txbClientObject.get_value();
alert(txbClientObject.get_checked());
alert(txbClientObject.get_text());
txbClientObject.set_checked(true);
}
</script>
这是一个更完整的示例,它将向您展示如何使用CSS类来获取任何所需的元素,并通过指定LayoutTemplate提供有效的HTML:
<telerik:RadListView runat="server"
ID="parameterList"
OnNeedDataSource="parameterList_NeedDataSource"
ItemPlaceholderID="theItemPlaceHolder">
<LayoutTemplate>
<table>
<asp:PlaceHolder ID="theItemPlaceHolder" runat="server" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td class="buttonCell">
<telerik:RadButton ToggleType="CheckBox"
ButtonType="LinkButton"
runat="server"
ID="chkParameterType"
AutoPostBack="False"
Text='<%# Eval("Description") %>'
CssClass='<%# Eval("ParameterName") + "_button" %>'>
<ToggleStates>
<telerik:RadButtonToggleState PrimaryIconCssClass="rbToggleCheckboxChecked"/>
<telerik:RadButtonToggleState PrimaryIconCssClass="rbToggleCheckbox" />
</ToggleStates>
</telerik:RadButton>
</td>
</tr>
</ItemTemplate>
</telerik:RadListView>
<asp:Button ID="Button1" Text="get third button" OnClientClick="getThirdButton();return false;" runat="server" />
<script>
function getThirdButton() {
var listView = $find('<%= parameterList.ClientID %>');
var buttonCells = $telerik.$(".buttonCell", listView.get_element().parentNode);
var txbClientObject = $telerik.findControl(buttonCells[2],
"chkParameterType");
var current = txbClientObject.get_value();
alert(txbClientObject.get_checked());
alert(txbClientObject.get_text());
txbClientObject.set_checked(true);
}
</script>
使用C#执行JavaScript页面 - javascript我正在尝试使用C#抓取一个网站。在此过程中的某个时候,网站返回了我需要执行的JavaScript页面,以便它将生成一些参数,然后使用所生成的参数作为查询变量来发布请求。这是JavaScript文件https://jsfiddle.net/7aw5vr59/浏览器生成的结果文件如下所示:<imimxxxyyy id="ActiveX"…
将Web用户控件添加到页面时,asp按钮onclick不会触发 - javascript我正在使用使用Visual Studio模板创建的Web表单应用程序。模板具有一个内容占位符,该占位符被访问的任何页面的内容替换。有问题的页面有几个服务器控件,例如文本框,标签和按钮。当我单击我的更新按钮时,它可以正常工作,这些值会回传并更新数据库。我想在所有子页面上创建通用的登录提示。我的导航栏(位于我的母版页中)具有引导程序设置。我在导航栏中添加了一个下…
Telerik单选按钮所需的字段验证器 - javascript如何设置Telerik单选按钮所需的字段验证器?我想在按钮单击“ BtnSave”上设置必填字段验证器吗?请帮忙!<telerik:RadButton ID="radio_male" runat="server" ToggleType="Radio" AutoPostBack="fa…
选择后显示输入元素 - javascript我有一个表格,其中取决于用户的选择,输入元素是否可见。实际上,用户正在以另一种形式设置已定义的合作伙伴类型,并且如果选中该元素,则允许在该类型的合作伙伴上可见的元素类型1将显示以下元素:<input type="text" id="partner" name="partner" class=&…
在PHP文件中调用javascript函数并在加载HTML文件之后? - javascript我需要在我的php中调用js函数,但无法正常工作。有人可以告诉我我在做什么错吗?我该如何轻松地做到这一点?谢谢!我有三个文件: mail.php负责发送$ _POST的内容(工作正常)。我调用我的javascript函数来切换模式,具体取决于邮件是否已发送。 <? ... $response = $sendgrid->send($email);…