Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RadGrid中第二列上的扩展选项_C#_Asp.net_Telerik - Fatal编程技术网

C# RadGrid中第二列上的扩展选项

C# RadGrid中第二列上的扩展选项,c#,asp.net,telerik,C#,Asp.net,Telerik,我已经在我的项目中创建了一个RADGrid,我希望在第二列中使用展开选项,而不是默认的第一列。可以这样做吗?这在RadGrid中是不可能的。展开按钮总是放在每行第一列的前面。但是,使用下面描述的一些模板,您可以实现这一点 如果要在单击第二列时展开,请将第二列设为GridTemplateColumn 外部RadGrid应该只有两列,第一列显示为常规列,第二列显示为折叠的RadGrid 在该列的模板中,放置具有层次结构的RadGrid 已启用且仅绑定到第一行的值 专栏 然后,您将最终实现您的需求

我已经在我的项目中创建了一个RADGrid,我希望在第二列中使用展开选项,而不是默认的第一列。可以这样做吗?

这在RadGrid中是不可能的。展开按钮总是放在每行第一列的前面。但是,使用下面描述的一些模板,您可以实现这一点

  • 如果要在单击第二列时展开,请将第二列设为GridTemplateColumn
  • 外部RadGrid应该只有两列,第一列显示为常规列,第二列显示为折叠的RadGrid
  • 在该列的模板中,
    放置具有层次结构的RadGrid
    已启用且仅绑定到第一行的值
    专栏
    
  • 然后,您将最终实现您的需求
请注意,您应该将template列中的RadGrid绑定到与RadGrid的NeedDataSource事件中的外部RadGrid相同的数据源。唯一的区别是内部RdGrid启用了层次结构,您需要使用适当的事件来实现内部RdGrid的层次结构

 protected void RadGrid2_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
 {
    (sender as RadGrid).DataSource = GetDataTable();
 }

我发布了另一个答案,因为它与我之前的回答完全不同,将两者放在一个答案中会让读者非常困惑

正如您在下面的屏幕截图中所看到的,此解决方案以100%的方式满足您的需求。然而,这是一个高度定制的解决方案,如果您只想坚持RadGrid开箱即用的解决方案,那么我之前的回答非常适合

 protected void RadGrid2_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
 {
    (sender as RadGrid).DataSource = GetDataTable();
 }

要记住的要点如下

  • 您需要包含jquery才能使其正常工作。通过使用Telerik控件库附带的嵌入式jquery,您可以轻松做到这一点。我已经提到了将自动在页面中包含嵌入式jquery的标记
  • 我假设您正在为分层RadGrid使用服务器端绑定
  • 您只需将如下所示的JavaScript块添加到您的aspx页面中,即可实现此功能
  • 我将expand列移动到第3列之前,但您可以通过将
    newPosition
    变量设置为适当的值将其移动到任何位置
  • 在您的场景中,您会将newPosition设置为1,因此expand列正好出现在第二列之前
  • 请注意,当then expand column被移位时,还需要移位expand column的标题,否则列标题将不会与其列对齐
此解决方案的JavaScript


系统应用程序添加加载(函数(){
$=$telerik.$;//确保可以将$symbol用于嵌入式jquery
var newPosition=2;//将其设置为1、2或3等(但从不设置为0)
//根据您的要求
//gridClientId是服务器端RadGrid1.ClientID属性,即呈现页面中radgrid div元素的id
//var gridClientId=“”;
var grid=$find(gridClientId);
var dataItems=grid.get_masterTableView().get_dataItems();
对于(var i=0;i
用于包含嵌入式jquery的标记



您能在那里写一些代码吗?这样,我们就可以确切地了解您需要做什么以及我们可以在哪里更改?您不会理解代码中的问题。我正在制作这样一个网格。但我不想在第1列扩展网格,而是想在第2列扩展网格。我刚刚发布了另一个答案,完全实现了您的功能。@Ajay,如果它满足您的要求,请将其标记为答案。这是所有相关人员的最佳利益。是否有一种方法可以从CS代码中处理此问题。。。例如。。。我在第一列中有一个员工id,当我单击任何特定的员工id时,展开按钮应移到第二列,并且网格应包含所有向其父员工id报告的员工(前面单击的员工id)。这不可能从服务器端进行。我试图先做那件事,但没有成功。因此,您希望在employee id列之后使用expand按钮,但单击employee行中的任意位置时,该行应展开。这就是你想要的吗?我把员工按钮保留为链接按钮。一旦我点击任何员工链接按钮,我希望在第二列上有扩展选项……但最初扩展按钮应该在第一列上。这可能吗?你能发布你的RadGrid的标记,包括链接按钮吗?您可以做的是在页面中添加一个asp:HiddenField,单击employeeid链接按钮时,在代码隐藏中将其值设置为1;然后使用与我在回答中提到的相同的Javascript代码,但仅当隐藏字段值为1时才执行脚本。这将实现您的场景。不要忘了在document ready event中执行Javascript代码之后,将隐藏字段值设置为空字符串。嗨,sunil,请您再次编写前面编写的另一个答案,好吗。。。。这也很有帮助,我会在接下来的几个小时内发布。
<telerik:RadScriptManager runat="server" ID="RadScriptManager1">
  <Scripts>
    <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
    <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
    <%!-- othert scripts of your page will go here -->
</telerik:RadScriptManager>