作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是尝试设置客户端 RadListView 项目模板内的 telerik RadButton 的复选框(使用 javascript/jquery)。
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 尝试首先尝试使用 telerik 的库,如 this post 中所示。
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>
关于javascript - 检查 RadListView ItemTemplate 中的 RadButton 复选框 - 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28416077/
我是一名优秀的程序员,十分优秀!