FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 12513|回复: 16
打印 上一主题 下一主题

【已解决】Web.config配置不对导致的表格模板列问题

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-11 03:38:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   
界面如图:                  
   此图片我用全选复选框时模板列中只能选择第一行的数据.

其中浏览列后的是权限列表,可显示的只有最后一行的权限"新增,编辑,删除",事实上其他模块的权限是不同的.
我后台RowDataBound事件的代码如下:
        protected override void Gr_RowDataBound(object sender, GridRowEventArgs e)
        {
            System.Web.UI.WebControls.CheckBoxList ddlOthers = (System.Web.UI.WebControls.CheckBoxList)gr_Base.Rows[e.RowIndex].FindControl("ddlOthers");

            RoleModulePower row = e.DataItem as RoleModulePower;
            string moduleName = row.ModuleName;

            List<string> otherPowerNames = ModulePowerTypeHelper.GetModuleOtherPowerTypeDic(moduleName);

            foreach (string powerName in otherPowerNames)
            {
                // powerName = "ChangePassword" moduleName = "CoreUser"
                System.Web.UI.WebControls.ListItem item = new System.Web.UI.WebControls.ListItem();
                item.Value = powerName;
                item.Text = ModulePowerTypeHelper.GetTitle(moduleName, powerName);

                item.Selected = row.OtherPowers[powerName].Value<bool>();

                ddlOthers.Items.Add(item);
            }
        }

前台:
                            <x:Grid ID="gr_Base" ShowHeader="False" runat="server"
                                EnableRowNumber="true" AllowSorting="true" PageSize="20" ShowBorder="true" AllowPaging="true"
                                EnableTextSelection="true" IsDatabasePaging="true"
                              
                                DataKeyNames="Id,ModuleName" AutoScroll="true" EnableRowDoubleClick="true">
                                <Columns>
                                    <x:BoundField HeaderText="标题" SortField="Title" DataField="Title" Width="120px" />
                                    <x:BoundField HeaderText="名称" SortField="ModuleName" DataField="ModuleName" Width="120px" />
                                    <x:CheckBoxField TextAlign="Center" ColumnID="CanRead" DataField="CanRead" HeaderText="浏览"
                                       RenderAsStaticField="false" Width="50px" />
                                    <x:TemplateField ExpandUnusedSpace="true" ColumnID="Others" HeaderText="其他权限">
                                        <ItemTemplate>
                                            <asp:CheckBoxList ID="ddlOthers" CssClass="others" RepeatLayout="Flow" RepeatDirection="Horizontal"
                                                runat="server">
                                            </asp:CheckBoxList>
                                        </ItemTemplate>
                                    </x:TemplateField>
                                </Columns>
                            </x:Grid>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
 楼主| 发表于 2013-3-11 07:21:37 | 只看该作者
哪位老大帮我看看这个问题吧!
板凳
 楼主| 发表于 2013-3-12 09:37:48 | 只看该作者
西门吹雪 发表于 2013-3-11 07:21
哪位老大帮我看看这个问题吧!

老大忙看看吧,谢谢了
地板
发表于 2013-3-12 09:51:27 | 只看该作者
其实你的问题是什么??你的描述不太清楚啊。。。
5#
 楼主| 发表于 2013-3-12 10:43:18 | 只看该作者
appletreegd 发表于 2013-3-12 09:51
其实你的问题是什么??你的描述不太清楚啊。。。

首先谢谢老大.问题是这样的:

我用的是三石老大的APPBOX中的权限管理.只是把Subsonic改成了Nhibernate.
界面中是权限分配的页面.其中权限列表一列是我把菜单对应的功能权限列了出来(仅为了方便对照找问题,实际项目中不会列出).比如第一行对应菜单模块管理,其中的权限有"New","Edit","Delete",默认权限都是False.
其他权限一列是模板列,与三石老大APPBOX中的是一样的.模板列用的是CheckBoxList控件来显示."新增","编辑","删除"分别对应"权限列表"列中的"New","Edit","Delete".
现在的问题是这样,我在Grid的RowDataBound事件来绑定,可每一行该模板列显示的数据都是最后一行的对应的权限列表的数据,如"权限列表"数据为"{}"的列在模板列"其他权限"中对应的数据应该为空,"权限列表"数据为"{"Edit":false}的列在模板列"其他权限"中对应的数据应该只有"编辑"选择框,其他没有
6#
 楼主| 发表于 2013-3-12 10:44:43 | 只看该作者
appletreegd 发表于 2013-3-12 09:51
其实你的问题是什么??你的描述不太清楚啊。。。

另外我在后台跟踪到的数据又是正确的,绑定出来就出问题了
7#
发表于 2013-3-12 11:27:15 | 只看该作者
本帖最后由 appletreegd 于 2013-3-12 11:28 编辑
西门吹雪 发表于 2013-3-12 10:44
另外我在后台跟踪到的数据又是正确的,绑定出来就出问题了

我用把你的代码改了一下在APPBOX上测试,没问题啊。
<x:Grid ID="gr_Base" ShowHeader="False" BoxFlex="1" runat="server" EnableRowNumber="true" AllowSorting="true"
                        PageSize="20" ShowBorder="true" AllowPaging="true" EnableTextSelection="true"
                        IsDatabasePaging="true" DataKeyNames="ModuleId,ModuleName" AutoScroll="true"
                        EnableRowDoubleClick="true" OnRowDataBound="Gr_RowDataBound">

  1. protected void Gr_RowDataBound(object sender, GridRowEventArgs e)
  2.         {...}
复制代码

因为我是在那个页面绑定的,你看效果:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
8#
 楼主| 发表于 2013-3-12 16:05:01 | 只看该作者
appletreegd 发表于 2013-3-12 11:27
我用把你的代码改了一下在APPBOX上测试,没问题啊。

我用全选复选框按钮时模板列中的复选框只能选择第一行的数据.其他行没反应.效果见新加的图片.
9#
发表于 2013-3-12 16:51:53 | 只看该作者
就是个循环遍历的过程。参照APPBOX上的吧,估计是代码哪里有问题。
10#
 楼主| 发表于 2013-3-13 02:45:02 | 只看该作者
appletreegd 发表于 2013-3-12 16:51
就是个循环遍历的过程。参照APPBOX上的吧,估计是代码哪里有问题。

代码应该没问题,我就用一个Label来显示数据,出来的结果也全部是最后一行的数据.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-5-23 06:50 , Processed in 0.050423 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表