Asp.net 电传文本选择
我有一个telerik雷达网,如下图所示Asp.net 电传文本选择,asp.net,vb.net,telerik,radgrid,itemcommand,Asp.net,Vb.net,Telerik,Radgrid,Itemcommand,我有一个telerik雷达网,如下图所示 | Username | Password | ------------------------- | A_user | ***** | | A_user2 | ***** | | A_user3 | ***** | 当我单击其中一行时,它将显示所单击行的密码,如下所示: | Username | Password | ------------------------- | A_user | *****
| Username | Password |
-------------------------
| A_user | ***** |
| A_user2 | ***** |
| A_user3 | ***** |
当我单击其中一行时,它将显示所单击行的密码,如下所示:
| Username | Password |
-------------------------
| A_user | ***** |
| A_user2 | A password |
| A_user3 | ***** |
那很好。我这样做是因为密码的解密是一个相当复杂和漫长的过程,因此每次解密一个密码的时间更少,尤其是当用户不需要所有密码时
显示密码后,我希望能够在网格中选择密码进行复制。不幸的是,radgrid将再次启动“RowClick”item命令,并且该行将被取消选中。因此,我无法复制密码
我的问题是:在某些情况下,有没有办法取消radgrid的itemcommand?
我希望能够在密码已解密时禁用itemcommand事件
提前谢谢
编辑:
我想我还应该提到,我正在使用radajaxloadingpanel在网格上显示加载时的动画。即使itemcommand方法不执行任何操作,也会显示ajaxloadingpanel,并取消选择我试图突出显示的文本
更多编辑:
这是我的radgrid代码
<telerik:RadGrid id="radGridAccounts" runat="server" Width="99%" PageSize="20" AllowPaging="true" AllowSorting="true"
AllowFilteringByColumn="True" ShowStatusBar="true" EnableLinqExpressions="False" GridLines="None"
AllowMultiRowSelection="false">
<ClientSettings EnableRowHoverStyle="true" EnablePostBackOnRowClick="true" AllowKeyboardNavigation="false">
<Selecting AllowRowSelect="True" />
<KeyboardNavigationSettings EnableKeyboardShortcuts="false" />
</ClientSettings>
<PagerStyle Mode="NextPrevAndNumeric" PagerTextFormat=""/>
<MasterTableView AutoGenerateColumns="False" EditMode="InPlace" CommandItemDisplay="Top"
InsertItemDisplay="Top" AllowFilteringByColumn="True" NoMasterRecordsText="Aucun compte"
InsertItemPageIndexAction="ShowItemOnCurrentPage" DataKeyNames="USERN" >
<Columns>
<%--Username--%>
<telerik:GridBoundColumn UniqueName="USERN" DataField="USERN" HeaderText="Username"
AllowFiltering="true" ColumnEditorID="radUsernameEditor"/>
<%--Password--%>
<telerik:GridBoundColumn UniqueName="PASWR" DataField="PASWR" HeaderText="Password"
AllowFiltering="false" ColumnEditorID="radPasswordEditor" />
<%--Edit--%>
<telerik:GridEditCommandColumn ButtonType="ImageButton"
InsertImageUrl=".\Images\ok.gif" UpdateImageUrl=".\Images\ok.gif" CancelImageUrl=".\Images\cancel.gif" />
<%--Delete--%>
<telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" Text="Delete"
ImageUrl=".\Images\delete.gif" />
</Columns>
<CommandItemSettings AddNewRecordText="" RefreshText="" />
</MasterTableView>
</telerik:RadGrid>
在radGrid上切换到OnSelectedIndexChanged函数,将当前选定的行存储在客户端变量中,并处理rowSelected客户端事件,取消或允许回发,同时添加要使用的ClientDataKeyName
<telerik:RadGrid id="radGridAccounts" runat="server" Width="99%" PageSize="20" AllowPaging="true" AllowSorting="true" OnSelectedIndexChanged="RadGridAccounts_SelectedIndexChanged"
AllowFilteringByColumn="True" ShowStatusBar="true" EnableLinqExpressions="False" GridLines="None"
AllowMultiRowSelection="false">
<ClientSettings EnableRowHoverStyle="true" EnablePostBackOnRowClick="true" EnableAllowKeyboardNavigation="false">
<Selecting AllowRowSelect="True" />
<KeyboardNavigationSettings EnableKeyboardShortcuts="false" />
<ClientEvents OnRowSelected="rowSelected" />
</ClientSettings>
<PagerStyle Mode="NextPrevAndNumeric" PagerTextFormat=""/>
<MasterTableView AutoGenerateColumns="False" EditMode="InPlace" CommandItemDisplay="Top"
InsertItemDisplay="Top" AllowFilteringByColumn="True" NoMasterRecordsText="Aucun compte"
InsertItemPageIndexAction="ShowItemOnCurrentPage" DataKeyNames="USERN" ClientDataKeyNames="USERN" >
<Columns>
...
</Columns>
<CommandItemSettings AddNewRecordText="" RefreshText="" />
</MasterTableView>
</telerik:RadGrid>
<script type="text/javascript">
var selectedUserName;//global js var
function rowSelected(senders, args)
{
//get the ClientDataKeyName
var rowUserName= args.getDataKeyValue("USERN");
if(selectedUserName == rowUserName){
args.set_cancel(true);//cancel the postback
}
}
</script>
你可以只发布你的radgrid代码,只对你使用的命令感兴趣谢谢你调查我的问题。我已经添加了代码。你必须计算出我发布的c#to vb.net,刚刚看到你发布了你的代码,你的代码稍微调整一下应该可以在SelectedIndexChange中工作。我习惯于将c#转换为vb,不用担心。我会试试看,然后再给你回复。谢谢添加了更多代码供您尝试。。EnablePostBackonRow单击并添加选定的客户端事件行。如果使用args重新选择同一行,则可以取消对选定行的回发;工作起来很有魅力。谢谢!不确定在-1上它解决了op问题,并且显然不是将要编译的页面的完整代码,也不是它的本意。
<telerik:RadGrid id="radGridAccounts" runat="server" Width="99%" PageSize="20" AllowPaging="true" AllowSorting="true" OnSelectedIndexChanged="RadGridAccounts_SelectedIndexChanged"
AllowFilteringByColumn="True" ShowStatusBar="true" EnableLinqExpressions="False" GridLines="None"
AllowMultiRowSelection="false">
<ClientSettings EnableRowHoverStyle="true" EnablePostBackOnRowClick="true" EnableAllowKeyboardNavigation="false">
<Selecting AllowRowSelect="True" />
<KeyboardNavigationSettings EnableKeyboardShortcuts="false" />
<ClientEvents OnRowSelected="rowSelected" />
</ClientSettings>
<PagerStyle Mode="NextPrevAndNumeric" PagerTextFormat=""/>
<MasterTableView AutoGenerateColumns="False" EditMode="InPlace" CommandItemDisplay="Top"
InsertItemDisplay="Top" AllowFilteringByColumn="True" NoMasterRecordsText="Aucun compte"
InsertItemPageIndexAction="ShowItemOnCurrentPage" DataKeyNames="USERN" ClientDataKeyNames="USERN" >
<Columns>
...
</Columns>
<CommandItemSettings AddNewRecordText="" RefreshText="" />
</MasterTableView>
</telerik:RadGrid>
<script type="text/javascript">
var selectedUserName;//global js var
function rowSelected(senders, args)
{
//get the ClientDataKeyName
var rowUserName= args.getDataKeyValue("USERN");
if(selectedUserName == rowUserName){
args.set_cancel(true);//cancel the postback
}
}
</script>
protected void RadGridAccounts_SelectedIndexChanged(object sender, EventArgs e)
{
if (RadGridAccounts.SelectedItems == null || RadGridAccounts.SelectedItems.Count == 0)
return;
var dataItem = RadGridAccounts.SelectedItems[0] as GridDataItem;
if (dataItem != null)
{
//do the password look up
}
}