公文编辑器和权限控制
1:设计目的:
     具有权限的管理员或者用户可以定义公文模板,模板里面的内容和格式样式是由有权限的用户在编辑器里面像使用word一样自由画,而且可以控制里面的单元格的权限,即某个单元格的读写改的权限,比如具有制作权限的用户制作网络部的请假条(注意这里只是举例说明)的时候,可以按照要求自画一个申请条如下:
请假条
请假人: (A内容) 请假起止时间: (B内容)
理由: (C内容)
李经理签名: (D内容)
王主管签名: (E内容)
申请人签名: (F内容)
通过时间: (G内容)
  这里就涉及到A,B,C,D,E,F,G处内容填写以及权限控制的问题,具体来说就是当一网络部员工登录系统的时候,他所能进行填入修改的单元格,是根据他的所具有的权限来控制的,这里他能有修改的单元格子为:A,B,C,F.当他填写完A,B,C,F格子内容后他就完成了他的现在的工作,他接下来的工作就是等待李经理, 王主管签名确认了,而当李经理登陆后他所能控制的单元格为D单元格,王主管类似对应于F单元格,当他们两个人签名通过后这张请假条才能生效,他们任何一个人不能通过都不算数.都将作废.2.涉及问题:
就上面的样式和单元格的权限控制来说,怎么样在管理员制作公文模板的时候怎么在画的时候就在某个单元格里面留下标志呢?(这些标志是用来好以后控制权限作用的,因为每个人拥有的单元格的权限不同,有的是可以改的,但是有些却只是可以看而不能改的,甚至有些是连看都不能看的.),就像csdn论坛上面的给分一样,你不输入密码它的那些给分的输入框就是隐藏不可以见的,你输入了正确的密码以后,就显示出你要填写的那些单元格,每个人输入密码以后显示出来的单元格都不一样,因为所拥有的权限不同,还有就是怎么不在不同的位置(用户按照需求自己画的),显示和控制权限呢?
我的想法有两个:
1:自己单独制作一个实用于本系统的控件,但是这个的话工程量是很大的.所以暂时不考虑.
2.这个方法就是利用现在网络上以及存在的html编辑控件,或者其他支持由用户自定义内容和格式的控件进行用户的内容和格式定义,再由管理员加入控制的标志和把对这些标志的不同的控制权限(例如对于这个单元格的只读,写入修改的权限)赋予个不同的用户,然后不同用户登陆以后就会根据自己对某些个单元格所拥有的权限而显示不同的内容出来,例如如果它对某个单元格是只读的权限,那他就可以看而不能写,如果是设置了隐藏的话,他就不显示给用户看了,但是如果是可以写的话,就会有相应的输入框显示出来给用户进行输入.总结问题:
这里总结一些内容,即表单的格式和内容是由有权限的人定义,再说明一次,这些格式和内容都是可以根据需要而千变万化的.
我想的两个方法由于时间的原因我比较倾向于第二种,但是第二种的单元格标志应该怎么留呢?又怎么对这些标志单元格进行权限控制呢?完成以上几步后又怎么样根据权限输出内容呢?这些就是这个部分的主要问题!

解决方案 »

  1.   

    也许有人会说我笨,不知道采用那种单独列出来一个asp.net的textbox控件之类让审批人看了后就填入意见然后设置一个审批通过的标志(大多数系统的的公文流转都是这样的做法),这个我们讨论过,但是由于客户调查的时候,因为很多年老的人还布怎么会用电脑,他用电脑的时候就要像在他平常在纸张上签名一模一样,在他平常特定的地方输入字才行,所以才采用这愚笨的办法!
      

  2.   

    不太懂你的意思增加一个权限表
    根据登陆的用户权限,来控制textbox框的readonly属性不行吗??
      

  3.   

    从工程角度讲,这个系统可以下马了,不可能推行起来。
    首先就是用户不接受电脑,即使给他再好的客户端,他也用不习惯。我的建议,给所有领导定制那种嵌入桌面的触摸屏,就跟纸张工作一样。
    然后就是权限分散,你想要管理员分配给办公室这样的表格定制权,这个想法完全符合软件开发思路,但是绝对不符合用户使用思路,办公室最多能做到在word里面制个表,让他再去分配权限,难!最后的唯一结果就是,办公室打印出来一张表,然后交给电脑部,说你们照这个表去做成网上的格式吧。因此,你的方法2只要能够给懂得程序设计原理的人用就行了,完全不必那么智能。
    从技术角度讲,你可以查找一些关于工作流的资料,下面这个网站你不妨去看看。
    http://javafox.vip.myrice.com/index.htm
    你的表格定制只需要给懂得程序原理的人用就可以了,也就是说,表格可以用html在线编辑器,然后自己规定一系列标签,跟BBS里面的UBB编码一样,出一个完整的解释手册。
    比如A内容就写:[man type="select" owner="creator" multi="false" viewer="all"],就说明,这是一个填写人员的框,类型是select,就是可以通过一个新的查询窗口选择人员;所有者是creator,就是创建人能填写;多人是否,就是只能选择一个人;查看者是all,就是所有人都能看。D内容就写:[sign type="image" owner="mngLi" viewer="bossWang"],说明这是一个签名框,类型是image,就是签名图;所有者是mngLi,就是李经理能写;查看者是bossWang,就是王主管能看。…………
    你的后台分析这些标签,转换成前台的表示形式,如文本框、图形输入的ActiveX等等。
      

  4.   

    可以在后台读取登录用户的权限设置的标志位来控制,或者直接寻找登录系统的用户名是否匹配,例如你所说的"李经理""王主管",要用到数据库.
    至于 fangyifeng(想吃老虎的猪) 所说的问题,提供手写输入应该可以解决.
      

  5.   

    to:qiangsheng(做人很厚道)
    可以说是理解到我的题意,说的也很有道理,我的想法也是差不多,但是具体实现起来难.to:zbuse(), yiyioo(天一) :谢谢你们帮我顶,但是你们误解我的意思了,
    qiangsheng(做人很厚道)理解的差不多了!
      

  6.   

    <TABLE style="WIDTH: 640px; HEIGHT: 107px" height=107 cellSpacing=0 cellPadding=0 width=640 border=1>
    <TBODY>
    <TR>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</TD>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 请假条</TD>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </TD>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; </TD></TR>
    <TR>
    <TD>请假时间起止时间:</TD>
    <TD></TD>
    <TD>请假人签名:</TD>
    <TD></TD></TR>
    <TR>
    <TD>理由:</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD></TR>
    <TR>
    <TD>审批人A(意见):</TD>
    <TD></TD>
    <TD>签名:</TD>
    <TD></TD></TR>
    <TR>
    <TD>审批人B(意见):</TD>
    <TD></TD>
    <TD>签名:</TD>
    <TD>
    <P>&nbsp;</P></TD></TR></TBODY></TABLE>
    <P>&nbsp;</P>
    <P>&nbsp;</P>
      

  7.   

    你可以用datagrid试试,设计出个格式,然后帮定相关的内容,并设置相关单元格的属性,因该可以实现。
        不过我还是建议你和他们协商一下,这样你可以省去好多力气,这个简直就是用西瓜换芝麻。
      

  8.   

    如果再没人知道了的话就再帮这个小忙也算,把下面的html代码里面的class="1"的对象的name列出来,然后返回一个数组列表.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    </head><body>
    <table width="938" border="1">
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>请假条</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>姓名:</td>
        <td><form id="form1" name="form1" method="post" action="">
          <label>
            <input type="text" name="textfield" class="1"/>
            </label>
        </form>    </td>
        <td>照片</td>
        <td><img src="" width="32" name="name" height="32" class="1" /></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>性别:</td>
        <td><form id="form2" name="form2" method="post" action="">
          <p>
            <label>
    <input type="radio" name="RadioGroup1" value="男" />          
    男</label>
           
            <label>
              <input type="radio" name="RadioGroup1" value="女" />
              女</label>
            <br />
          </p>
        </form>    </td>
        <td>test</td>
        <td><input name="" type="text" alt="dddd" /></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>李经理签名:</td>
        <td><form id="form3" name="form3" method="post" action="">
          <label>
            <input type="text" name="textfield2"  class="1" />
            </label>
        </form>
        </td>
        <td>意见:</td>
        <td><form id="form4" name="form4" method="post" action="">
          <label>
            <input type="text" name="textfield3" class="1" />
            </label>
        </form>
        </td>
        <td>&nbsp;</td>
      </tr>
    </table>
    </body>
    </html>
      

  9.   

    不要懒,我原来写过3000多行的字符串处理程序来读写HTML文件,呵呵.也是读FrontPage做成的HTML文件,然后把HTML文件转成ASPX文件,把服务器端的代码也加去.最后通过JavaScript在客户端点击设置各个元素的权限.很简单的.
      

  10.   

    我的思路是,首先要将全部的操作员按照“申请表”来定制权限。“申请表”中的权限又按照树型结构排列,比如“请假条”就是一组权限,然后该节点下
    又有A,B,C,D,E,F,G等子权限。接着A,B,C,D,E,F,G下又有“查看”,“编辑”,“新增”,等等功能例:
    ”请假条“
       |----请假人:(A内容)       
       |   |----"查看”
       |   |----"编辑”             
       |----请假起止时间:(B内容)
       |   |----“查看”
       |   |----“编辑”       
       |----理由:(C内容)
       |   |----“查看”
       |   |----“编辑”      
       |----李经理签名:(D内容)
       |   |----“查看”
       |   |----“编辑”
       |----王主管签名:(E内容)
       |   |----“查看”
       |   |----“编辑”
       |----申请人签名:(F内容)
       |   |----“查看”
       |   |----“编辑”
       |----通过时间:(G内容)
       |   |----“查看”
       |   |----“编辑”
    管理员在设计“申请表”时并不需要指定给任何操作员权限,只需要告诉系统该张表单需要定制哪些权限。然后根据该“申请表"中的权限,定制用户针对该表单的实际操作例:
    fangyifeng (想吃老虎的猪) 
    ”请假条“
       |----请假人:(A内容)       
       |   |----"查看”
       |   |----"编辑”             
       |----请假起止时间:(B内容)
       |   |----“查看”
       |   |----“编辑”       
       |----理由:(C内容)
       |   |----“查看”
       |   |----“编辑”      
       |----李经理签名:(D内容)
       |   |----“查看”
       |----王主管签名:(E内容)
       |   |----“查看”
       |----申请人签名:(F内容)
       |   |----“查看”
       |   |----“编辑”
       |----通过时间:(G内容)
       |   |----“查看”   
    王主管
    ”请假条“
       |----请假人:(A内容)       
       |   |----"查看”
       |----请假起止时间:(B内容)
       |   |----“查看”
       |----理由:(C内容)
       |   |----“查看”
       |----李经理签名:(D内容)
       |   |----“查看”
       |----王主管签名:(E内容)
       |   |----“查看”
       |   |----“编辑”   
       |----申请人签名:(F内容)
       |   |----“查看”
       |----通过时间:(G内容)
       |   |----“查看”李经理
    ”请假条“
       |----请假人:(A内容)       
       |   |----"查看”
       |----请假起止时间:(B内容)
       |   |----“查看”
       |----理由:(C内容)
       |   |----“查看”
       |----李经理签名:(D内容)
       |   |----“查看”
       |   |----“编辑”      
       |----王主管签名:(E内容)
       |   |----“查看”
       |----申请人签名:(F内容)
       |   |----“查看”
       |----通过时间:(G内容)
       |   |----“查看”
      

  11.   

    mingjunr(对酒当歌):
        把你的例子发我看看如何?
      

  12.   

    我觉得并不难啊,首先我们假设所有定制的表都可以以这种类型的html得到:
    <table>
    <tr>
    <td><input type=text></td></tr>
    <tr>...</tr>
    ...
    </table>
    那要做的就是把每个tr,td的display,和textbox 的disable属性跟数据库里的权限绑定起来。但为了让管理员能够设计表格,可能就麻烦点了,web当然不能随心所欲地画咯(就算能画也很难把用户画的东西组成一张表格,很不稳定),那就设计一个类似于excel定置表格的wizard,一步步地控制用户的动作。当然细致的设计还需要你自己来做,如果你们项目有预算考虑外包的话,可以来找我。
      

  13.   

    恩,算了. mingjunr(对酒当歌) ,做人要厚道的方法都可以行,总的老说真的麻烦,但是公司要这样做我也没办法,就做字符串分析的方法做了