下面是基本信息:监测点基本信息表 ( DeviceInfo )中有一个 监测点编号(DeviceID)和客户编号(ClientID)项
客户信息表 ( ClientInfo )中有一个 客户编号(ClientID)和客户名称(ClientName)项
登录页面有一个 用户名(UserName)=客户名称(ClientName)登录后连接到的页面有若干与监测点编号(DeviceID)一一对应的设备图标(ImageButton1,2,3....)怎么样实现就是用户登录后,那个页面只显示跟登录名对应的设备在哪里写程序,在登录界面的登录按钮那还是在登录后的页面中写,怎么写我知道SQL中有, string strSql = "select DeviceID from DeviceInfo where DeviceInfo.ClientID= ClientInfo.ClientID";接下来就不知道怎么做了!!请高手指点。

解决方案 »

  1.   

    你的设备图标ImageButton1,2,3...是事先就全部放置在页面上的?这样,你要遍历所有ImageButton控件,用它们和监测点编号的对应关系,确认哪个编号是存在的,然后visible=true,编号不存在的,visible=false另一种是,你先根据登录后得到的监测点编号,再动态生成imagebutton代码写在.aspx.cs页里
      

  2.   

    在登录页面把客户名称火客户编号取出来放Session里,查询页面再从Session取出来,写
    select DeviceID from DeviceInfo where DeviceInfo.ClientID=xxxx
      

  3.   

    string strSql = "select DeviceID from DeviceInfo where DeviceInfo.ClientID= ClientInfo.ClientID";
    执行这个语句放到一个DATATABLE中.然后
    for(int i=0;i<dt.rows.count;i++)
    {
    ImageButton a=new ImageButton();
    a.ID=dt.row[i]["DeviceID"].tostring();
    Page.Controls.Add(a);
    }这样.动态生成IMAGEBUTTON控件.不过你的事件写起来就比较麻烦了.
      

  4.   

    谢谢各位,感激涕零啊“另一种是,你先根据登录后得到的监测点编号,再动态生成imagebutton代码写在.aspx.cs页里”动态生成是怎么个做法?哪位好心人跟我说说!
      

  5.   

    string strSql = "select DeviceID from DeviceInfo where DeviceInfo.ClientID= ClientInfo.ClientID";
    执行这个语句放到一个DATATABLE中.然后
    for(int i=0;i<dt.rows.count;i++)
    {
    ImageButton a=new ImageButton();
    a.ID=dt.row[i]["DeviceID"].tostring();
    Page.Controls.Add(a);
    }这样.动态生成IMAGEBUTTON控件.不过你的事件写起来就比较麻烦了.就是这样的
      

  6.   

    不过动态生成的控件 事件一般不怎么好触发 建议你写成<a href="a.aspx?DeviceID=XX" ></a>
      

  7.   

    我学C#不久,第一次接触动态生成页面
    我想问一下怎么存在一个DATATABLE中,是建一个文件还是用〈DATATABLE〉〈/DATATABLE〉
    for(int i=0;i<dt.rows.count;i++)
    {
    ImageButton a=new ImageButton();
    a.ID=dt.row[i]["DeviceID"].tostring();
    Page.Controls.Add(a);
    }
    这个是放在.cs中吗“建议你写成<a href="a.aspx?DeviceID=XX" ></a>”
    这种方法怎么用
      

  8.   

    lc198422() ( ) 信誉:100    Blog  2006-11-29 08:05:04  得分: 0  
     
     
       我想请问一下大家,我的这个问题是不是设置用户权限的问题?
    那用户,角色,权限分别指的是什么呢?
    我还没有头绪
      
     
    --------------------------严格控制起来,确实你要考虑权限问题,但是你的问题的权限颗粒度要比角色小,所以只用角色的话,还是无法解决问题。对于imagebutton的显示的话,你可以按照上面的方法进行动态加入,在进一步处理的时候,你就要考虑用户处理时是否有这个权限了。鉴于你的表结构,以及权限比较简单,可以不用另外添加权限控制的表格了,直接在现有的表里判断就可以了。
      

  9.   

    各位大侠
    能不能帮我说具体一点,那个程序应该怎么写
    flyforlove(为情飞) 说到了点子上
    我也有这个想法,就是不知道从哪里下手
    谢谢啊
      

  10.   

    是不是
    string strSql = "select DeviceID from DeviceInfo where DeviceInfo.ClientID= ClientInfo.ClientID";
    放在登录界面的代码里面下面这个放在要显示imagebotton的页面里面吗?
    for(int i=0;i<dt.rows.count;i++)
    {
    ImageButton a=new ImageButton();
    a.ID=dt.row[i]["DeviceID"].tostring();
    Page.Controls.Add(a);
    }
      

  11.   

    lc198422() ( ) 信誉:100    Blog  2006-11-29 09:25:55  得分: 0  
     
     
       是不是
    string strSql = "select DeviceID from DeviceInfo where DeviceInfo.ClientID= ClientInfo.ClientID";
    放在登录界面的代码里面下面这个放在要显示imagebotton的页面里面吗?
    for(int i=0;i<dt.rows.count;i++)
    {
    ImageButton a=new ImageButton();
    a.ID=dt.row[i]["DeviceID"].tostring();
    Page.Controls.Add(a);
    }  
     
    -----------------------------是这样的,当你登陆后,你就必须要保存登陆用户的信息(至少是用户名),所以查询语句应该是这样的
    string strSql = "select DeviceID from DeviceInfo where DeviceInfo.ClientID= @ClientID";这样设备信息只有和登陆用户名有关的。另外在对设备操作时(select, update, delete等),首先要检查用户有没有对这个设备的权限。
      

  12.   

    @ClientID
    这个就是用户名吗?
    我的用户名没有绑定到数据库哦
      

  13.   

    lc198422() ( ) 信誉:100    Blog  2006-11-29 10:14:54  得分: 0  
     
     
       
    @ClientID
    这个就是用户名吗?
    我的用户名没有绑定到数据库哦
    -------------------sorry,刚才没有仔细看,你的登陆名用的是clientname字段,那么查询语句应该是string strSql = "select DeviceInfo.DeviceID from DeviceInfo inner join ClientInfo on DeviceInfo.ClientID= ClientInfo.ClientID where ClientInfo.ClientName=@ClientName";@ClientName是参数,就是你的登陆名,把它传进去就可以了。
      

  14.   

    protected void Page_Load(object sender, EventArgs e)
    {
    string  UserName;
    SqlParameter  para=new SqlParameter("@UserName",SqlDbType. VarChar,6);
    para.Value= UserName;
    com.Parameters.Add(para);
    string strSql = "select DeviceInfo.DeviceID from DeviceInfo inner join ClientInfo on DeviceInfo.ClientID= ClientInfo.ClientID where ClientInfo.ClientName=@UserName ";
     }
    protected void LoginButton_Click(object sender, EventArgs e)
    {
     Session["DeviceID "]= strSql;
    Server.Transfer("Right.aspx");     
    }
    上面这一段是我写在登录页面的代码,不知道对不对,给大家看一下
    Session["DeviceID "]= strSql;是不是有点不对?应该怎么写啊?
      

  15.   

    lc198422() 我不知道你基础怎么样,先看看一下一下几个方面的知识你是否了解1.C#语言
    2.asp.net的运作机制
    3.在asp.net中对数据库的接入,查询以及返回数据的操作如果这些最基本的东西都没有搞懂的话,就开始做程序,虽然勇气可嘉,但是实在是事倍功半,有时间在论坛上耽搁,还不如找本最基本的书先了解一下。