您的位置:程序门 -> .net技术 -> asp.net



datagrid 简单问题求助


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


datagrid 简单问题求助[已结贴,结贴人:xiaoym1116]
发表于:2007-08-12 14:37:14 楼主
论坛主题列表用datagrid   显示

  想在第一列显示一个图标。

  这个图标由数据库表中的displayorder(这个数据类型为int)值来定,

displayorder为隐藏列
 
如果当前行的displayorder值等于1则显示image/jing.gif

如果当前行的displayorder值等于2则显示image/ding.gif

我想了2中方式

一是   2种图片各为第2列和第3列,根据displayorder的值来选择关闭2列或3列

二是   在图片那列放2个div,取不同的id,默认visible   =   false   ,根据displayorder的值来打开显示某个。
      不过这样做遇到了问题,这样控制datagrid外的visible   =   true   可以,可是在模板列里就总提示并不包含   总提示“news”并不包含“div1”的定义


我刚接触,水平很差,身边又没有可以问的朋友,所以来这里请教,希望有人热心帮帮我,谢谢!
发表于:2007-08-12 14:49:081楼 得分:7
private   void   datagrid_itemdatabound(object   sender,   system.web.ui.webcontrols.datagriditemeventargs   e)
{
if(e.item.cells[2].text== "1 ")//displayorder列的值
{
((system.web.ui.webcontrols.image)e.item.cells[1].findcontrol( "imgstate ")).imageurl= "image/jing.gif
";                               //imgstate为datagrid中图片控件的id

}
if(e.item.cells[2].text== "2 ")
{
((system.web.ui.webcontrols.image)e.item.cells[1].findcontrol( "imgstate ")).imageurl= "image/ding.gif
";

}
}
发表于:2007-08-12 14:57:242楼 得分:0
如果是的话第一列显示一个图标
if(e.item.cells[2].text== "1 ")//displayorder列的值
全部改为:
if(e.item.cells[0].text== "1 ")//displayorder列的值
发表于:2007-08-12 14:58:563楼 得分:1
在前台动态生成列
发表于:2007-08-12 15:29:284楼 得分:1
<%#   ...   %> 就可以实现.
发表于:2007-08-13 09:48:255楼 得分:0
谢谢     object_delusion(梦飞翔)   的指教,我基本看明白了

只是对这里   e.item.cells[0].text   有点搞不明白

e.item.cells[0]   是第一列的意思吧?

  我已经按照上面您给出的方法试了,   可是图片总是显示不出来,是个小红叉

图片路径也检查过了     images/jing.gif

不知道是哪里还有问题,


aspx.cs

        protected   void   datagrid2_itemdatabound1(object   sender,   datagriditemeventargs   e)
        {

                if(e.item.cells[0].text== "1 ")//displayorder列的值
                {
                ((system.web.ui.webcontrols.image)e.item.cells[1].findcontrol( "imgstate ")).imageurl= "images/jing.gif ";//imgstate为datagrid中图片控件的id

                }
                if(e.item.cells[0].text== "2 ")
                {
                ((system.web.ui.webcontrols.image)e.item.cells[1].findcontrol( "imgstate ")).imageurl= "images/ding.gif ";
                }

        }


aspx


  <asp:templatecolumn>
      <headerstyle   width= "28px "   />
          <itemtemplate>
              <%#   databinder.eval(container.dataitem, "displayorder ")   %>
          </itemtemplate>
  </asp:templatecolumn>
                               
  <asp:templatecolumn>
      <headerstyle   width= "28px "   />
          <itemtemplate>
              <asp:image   id= "imgstate "   runat= "server "   />
          </itemtemplate>
  </asp:templatecolumn>

发表于:2007-08-13 10:21:506楼 得分:0
我在红叉上点右键查看图片地址属性,发现是不可用

  确定不是路径问题,不知道是我哪里还没写对,图片控件没有收到地址
发表于:2007-08-13 11:00:307楼 得分:1
图片控件是放在cell[1]   里吗?
发表于:2007-08-13 11:08:488楼 得分:0
e.item.cells[0]是datagrid的第一列
主要是取   displayorder       的值,
用e.item.cells[x]找datagrid中displayorder的值

发表于:2007-08-13 11:30:599楼 得分:0


图片控件是放在cell[1]   里的

  大概就是这样子的,非关键的省略了

  列的序号应该没有问题吧?为什么图片控件就是接收不到地址

  displayorder是   int   类型的,跟这没有关系吧?

 

<asp:datagrid   id= "datagrid2 "   runat= "server "   ……>
    <columns>
        <asp:templatecolumn>
            <headerstyle   width= "28px "   />
                <itemtemplate>
                    <%#   databinder.eval(container.dataitem, "displayorder ")   %>
                </itemtemplate>
            </asp:templatecolumn>
                               
            <asp:templatecolumn>
              <headerstyle   width= "28px "   />
                  <itemtemplate>
              <asp:image   id= "imgstate "   runat= "server "   />
            </itemtemplate>
        </asp:templatecolumn>

      ……

      </columns>
</asp:datagrid>

发表于:2007-08-13 19:44:4610楼 得分:0
求助

我在第2列建了一个div,想根据第一列的值来控制div的打开关闭,也是没有效果,很是郁闷


                  if   (e.item.cells[0].text   ==   "0 ")
                {
                        e.item.findcontrol( "test ").visible   =   false;
                }

发表于:2007-08-15 11:42:5211楼 得分:0
还是没有搞明白问题出在哪了

不过换个别的思路解决了实际问题


快速检索

最新资讯
热门点击