| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1362 人关注过本帖
标题:[求助]DataGrid中判断某行中某列的图片控件显示与否的问题
只看楼主 加入收藏
zhzh
Rank: 2
等 级:新手上路
威 望:3
帖 子:377
专家分:0
注 册:2006-10-18
收藏
 问题点数:0 回复次数:10 
[求助]DataGrid中判断某行中某列的图片控件显示与否的问题

我想判断表里的一个字段是否为空,DataGrid中显示该行的某列的一个Image控件显示与否?

具体就象绑定新闻标题时,如果该新闻有图片,则在绑定该标题后面显示一个提示的小图片,
如果该新闻没有图片,该行标题后面就没有显示提示的小图片
就是这样,请教..如何实现呢

搜索更多相关主题的帖子: DataGrid 控件 判断 
2007-05-19 02:14
guming
Rank: 4
等 级:业余侠客
威 望:5
帖 子:329
专家分:277
注 册:2006-11-9
收藏
得分:0 

先填充DataSet对象。。。在判断哪一行的图片路径字段为空,再将该行的Image控件的Visible属性设为False..就行了。。
for(int i=0;i<newsSet.Tables["im"].Rows.Count;i++) // im为存放图片路径的数据表。
{
if(newsSet.Tables["im"].Rows[i]["impath"].ToString()=="") //为图片路径字段
{
DataGridItem dgit=imgrid.Items[(int)i];//imgrid为你的DataGrid
Image t=(Image)dgit.FindControl("theIM"); //theIM为Image控件ID
t.Visible=false;
}
}
我试过了,可以做到。

[此贴子已经被作者于2007-5-19 16:56:47编辑过]


不想停留。。。
2007-05-19 16:53
zhzh
Rank: 2
等 级:新手上路
威 望:3
帖 子:377
专家分:0
注 册:2006-10-18
收藏
得分:0 
可是为什么提示"Image是不明确的引用"啊
别的控件可以这样使用啊 e.Item.FindControl("Image1")
可是Image却为什么不能

Tomorrow is another day! my love..................
2007-05-19 18:02
guming
Rank: 4
等 级:业余侠客
威 望:5
帖 子:329
专家分:277
注 册:2006-11-9
收藏
得分:0 
有可能Image是控件名,不可用作ID。。要不将代码贴出来看一下吧,,

[此贴子已经被作者于2007-5-19 18:10:26编辑过]



不想停留。。。
2007-05-19 18:09
zhzh
Rank: 2
等 级:新手上路
威 望:3
帖 子:377
专家分:0
注 册:2006-10-18
收藏
得分:0 
页面上的DG里面有一个Image控件.绑定数据库的图片(可是绑定不成功啊?)
<asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 400px; POSITION: absolute; TOP: 128px"
runat="server" AutoGenerateColumns="False" ShowHeader="False">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Image id="Image1" runat="server" ImageUrl='/allmytest/img/<%# DataBinder.Eval(Container.DataItem,"t_img1").ToString()%>'>
</asp:Image>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
后台代码如下:
if(!IsPostBack)
{

SqlConnection con=new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
con.Open();
string sqlsel="select * from Testchangeimg";
SqlDataAdapter da=new SqlDataAdapter(sqlsel,con);
DataSet ds=new DataSet();
da.Fill(ds,"dg");
for(int i=0;i<ds.Tables["dg"].Rows.Count;i++) // im为存放图片路径的数据表。
{
if(ds.Tables["dg"].Rows[i]["t_img2"].ToString()=="") //为图片路径字段
{
DataGridItem dgit=DataGrid1.Items[(int)i];//imgrid为你的DataGrid
Image t=(Image1)dgit.FindControl("Image1"); //theIM为Image1控件ID
t.Visible=false;
}
}
this.DataGrid1.DataSource=ds.Tables["dg"];
this.DataGrid1.DataBind();
con.Close();
}

绑定不成功啊?还有红色的Image那里提示出错"Image不是明确的引用",为什么?别的控件都能这样用啊
guming 谢谢啊,你怎么实现的.实现的代码给我看一下好吗?实在晕了

Tomorrow is another day! my love..................
2007-05-19 21:11
guming
Rank: 4
等 级:业余侠客
威 望:5
帖 子:329
专家分:277
注 册:2006-11-9
收藏
得分:0 
我用的是Access数据库,不是SQL。。我贴出来了,,你看一下吧,,
<script runat="server" language="c#">
OleDbConnection thisCON;
void Page_Load(Object Sender,System.EventArgs e)
{
this.imgrid.Items.FindControl("delbtn").Attributes.Add("OnClick","return confirm('确定要删除吗?')");
datacon();
imbind();
}
void datacon()
{
thisCON=new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath("dbs/webdata.mdb")+"");
thisCON.Open();
}
void imbind()
{
OleDbDataAdapter thisADPT=new OleDbDataAdapter("Select id,impath from im",thisCON);
DataSet hfSet=new DataSet();
thisADPT.Fill(hfSet,"im");
imgrid.DataSource=hfSet;
imgrid.DataBind();
for(int i=0;i<hfSet.Tables["im"].Rows.Count;i++)
{
if(hfSet.Tables["im"].Rows[i]["impath"].ToString()=="")
{
DataGridItem dgit=imgrid.Items[(int)i];
Image t=(Image)dgit.FindControl("theIM");
t.Visible=false;
}
}
thisCON.Close();
}
</script>
</head>
<body>
<form runat="server" method="post">
<asp:DataGrid runat="server" ID="imgrid" AutoGenerateColumns="false" DataKeyField="id">
<columns>
<asp:TemplateColumn HeaderText="图片">
<itemtemplate><asp:Image runat="server" ID="theIM" ImageUrl='<%# DataBinder.Eval(Container.DataItem,"impath")%>' Width="100px" Height="100px"/></itemtemplate>
</asp:TemplateColumn>
</columns>
</asp:DataGrid>
</form>
</body>
</html>

[此贴子已经被作者于2007-5-19 22:37:44编辑过]


不想停留。。。
2007-05-19 21:18
guming
Rank: 4
等 级:业余侠客
威 望:5
帖 子:329
专家分:277
注 册:2006-11-9
收藏
得分:0 
Image t=(Image)dgit.FindControl("Image1"); //不是(Image1)而是(Image)

[此贴子已经被作者于2007-5-19 21:21:54编辑过]


不想停留。。。
2007-05-19 21:20
guming
Rank: 4
等 级:业余侠客
威 望:5
帖 子:329
专家分:277
注 册:2006-11-9
收藏
得分:0 

我也不知道你的这句有没有问题。。
<asp:Image id="Image1" runat="server" ImageUrl='/allmytest/img/<%# DataBinder.Eval(Container.DataItem,"t_img1").ToString()%>'></asp:Image>

我用的是Access。。如果上面试了还不行的话,,你试改一下这里吧,

<asp:Image id="Image1" runat="server" ImageUrl='/allmytest/img/<%# DataBinder.Eval(Container.DataItem,"t_img1")%>.ToString()'>
</asp:Image>

[此贴子已经被作者于2007-5-19 21:25:40编辑过]


不想停留。。。
2007-05-19 21:23
guming
Rank: 4
等 级:业余侠客
威 望:5
帖 子:329
专家分:277
注 册:2006-11-9
收藏
得分:0 
改为 Selected........搞混了

不想停留。。。
2007-05-20 01:30
zhzh
Rank: 2
等 级:新手上路
威 望:3
帖 子:377
专家分:0
注 册:2006-10-18
收藏
得分:0 
呵呵..谢谢你了呀,不知道为什么就是不能用Image控件,我试了换成ImageButton控件的时候效果实现了.
你可以百度里收一下这个错误的提示
"Image不是明确的引用"
我真的搞不明白了,为什么别的控件都可以FindControl来查找并赋值给同一类的控件,而Image却不行呢?

Tomorrow is another day! my love..................
2007-05-20 01:40
快速回复:[求助]DataGrid中判断某行中某列的图片控件显示与否的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017145 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved