加急!在线等待!datagrid控件实现特殊绑定问题?

一路奔跑1314 2012-02-19 09:46:09
。net (VB),在vs2008中开发的
例如:数据字段: 项目申请名称1 申请人2 申请日期3 是否已批复4
a a a 是
b b b 否
c c c 否
datagrid绑定前三个字段,而根据是否批复来判断,如果已经批复则在该记录前显示绿色的灯,如果未批复,则该记录前显示红色灯。或者说如果批复了,本记录项目名称颜色为红色,未批复的项目名称颜色为绿色。
请问各位大侠如何实现?牛人可以把两种法案都说下!在线等待!!


...全文
135 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
一路奔跑1314 2012-02-20
  • 打赏
  • 举报
回复
谢谢muhengji
你的方法经改进可行。
现在放分
一路奔跑1314 2012-02-20
  • 打赏
  • 举报
回复
<asp:DataGrid ID="dg_htqp" Font-Size="14px" Width="100%" AutoGenerateColumns="false" AllowPaging="true" AllowCustomPaging="true" DataKeyField="htqp_name" PageSize="50" OnPageIndexChanged="dg_htqp_page" PagerStyle-HorizontalAlign="Right" PagerStyle-Mode="NumericPages" runat="server">
<Columns>

<asp:TemplateColumn>
<ItemTemplate>
<img alt="~/img/green.jpg" src="~/img/green.jpg" runat="server" visible='<%# IIF(container.dataitem("hthqb_kz_sfpf")='否', True, False) %>' /><img src="~/img/green.jpg" alt="~/img/red.jpg" runat="server" visible='<%# IIF(container.dataitem("hthqb_kz_sfpf")='是', True, False) %>' />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="项目名称">
<HeaderStyle Width="400px" />
<ItemTemplate>
<asp:HyperLink Text='<%# container.dataitem("lxsqs_sqsbt") %>' NavigateUrl='<%# "htqp_lxxst.aspx?htqp_name=" & container.dataitem("htqp_name") %>' ForeColor='<%# IIF(container.dataitem('hthqb_kz_sfpf')='否', green, red) %>' Target="_blank" runat="server" >

</asp:HyperLink>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn HeaderText="立项时间" DataField="lxsqs_date" DataFormatString="{0:d}">
<HeaderStyle Width="120px" />
</asp:BoundColumn>
<asp:BoundColumn HeaderText="立项单位" DataField="lxsqs_tbdw">
<HeaderStyle Width="120px" />
</asp:BoundColumn>
</Columns>
</asp:DataGrid>

报错是:<img alt="~/img/green.jpg" src="~/img/green.jpg" runat="server" visible='<%# IIF(container.dataitem("hthqb_kz_sfpf")='否', True, False) %>' /><img src="~/img/green.jpg" alt="~/img/red.jpg" runat="server" visible='<%# IIF(container.dataitem("hthqb_kz_sfpf")='是', True, False) %>' />中服务器标记的格式不正确。到底怎么写啊?
一路奔跑1314 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 muhengji 的回复:]
<asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<img alt="绿灯" runat="server" visible=' <%#IIf(Container.ItemIndex >= ……
[/Quote]


<asp:TemplateColumn>
<ItemTemplate>
<img alt="~/img/green.jpg" runat="server" visible='<%#if(container.dataitem("hthqb_kz_sfpf")="否", True, False) %>'<img alt="~/img/red.jpg" runat="server" visible='<%#if(container.dataitem("hthqb_kz_sfpf")="是", True, False) %>' />
</ItemTemplate>
</asp:TemplateColumn>

但是报错:
分析器错误
说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。

分析器错误消息: 服务器标记的格式不正确。

源错误:


行 229: <asp:TemplateColumn>
行 230: <ItemTemplate>
行 231: <img alt="~/img/green.jpg" runat="server" visible='<%#if(container.dataitem("hthqb_kz_sfpf")='否', True, False) %>'<img alt="~/img/red.jpg" runat="server" visible='<%#if(container.dataitem("hthqb_kz_sfpf")='是', True, False) %>' />
行 232: </ItemTemplate>
行 233: </asp:TemplateColumn>


源文件: /qlyx/htqp/htqp1.aspx 行: 231
一路奔跑1314 2012-02-19
  • 打赏
  • 举报
回复
分数不低啊!怎么没人回复啊?
爱英思躺 2012-02-19
  • 打赏
  • 举报
回复
DataGrid还有这么多人在用啊,在DataGrid的行绑定事件里加代码吧。

protected void DataGrid01_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.Cells[3].Text == "已审核")
{
e.Row.BackColor = System.Drawing.Color.Red;
}
else
{
e.Row.BackColor = System.Drawing.Color.White;
}
}


不过更推荐你用Repeater啊,可控性更好,性能也强一些。

另外,楼主也可以试试这个我和朋友历时一年开发出的代码生成器,名字叫EasyCode功能绝对强大,支持界面生成、多表关联,生成的源码也可以进行参照:
http://blog.csdn.net/cwbugs/article/details/7268267
muhengji 2012-02-19
  • 打赏
  • 举报
回复
<asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<img alt="绿灯" runat="server" visible=' <%#IIf(Container.ItemIndex >= 1, True, False)%>' /><img alt="红灯" runat="server" visible=' <%#IIf(Container.ItemIndex < 1, True, False)%>'/>

</ItemTemplate>
</asp:TemplateColumn>

</Columns>
</asp:DataGrid>




这样的可以不楼主,放两个img在要显示的地方,加ruant属性,改变visible的值显示哪个,visible那个属性哪里绑定值三元运算返回TRUE或者false给他就行啦。
子夜__ 2012-02-19
  • 打赏
  • 举报
回复
绑定的时候三元
<%#((Eval("xxx").ToString()=="1")?"red":"green")%>
大概就这个意思。


一路奔跑1314 2012-02-19
  • 打赏
  • 举报
回复
难道是我问题没有描述清楚,怎么baidu下,有的说datagrid不能实现这种功能。
我在重申下我的问题:
在datagrid控件中,判断数据库中某个字段,当该字段值符合一定条件是,让该记录的值为红色并在datagrid绑定中显示。
我存在的困难:不知道如何获取符合条件的记录行号?不知道如何把写该记录的字为红色的语句。
一路奔跑1314 2012-02-19
  • 打赏
  • 举报
回复
也就是说如何读取datagrid绑定的某条记录的项目名称的forecolor的属性?
一路奔跑1314 2012-02-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 junior_yuan 的回复:]
其实方法你都说出来啦。把数据拿出来在后台判断是否批复,如果是,把字体样式设置为红色,否则设置为绿色就行啦。至于怎么把数据拿出来,自己百度一下吧。百度很多这样的问题解决方法。
[/Quote]
请问:我获取批复字段的值后,如何把该记录的项目名字变绿色,这个关键语句我不知道怎么写,所以就问大家有什么好的方法。
我的代码如下:
在page_load中:

Dim conn As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath("../app_data/mydb.mdb"))
Dim strsql As String
Dim stryhm_dw, stryhm As String
'登陆用户名
stryhm = Session("yhm")
'登陆用户所属单位
stryhm_dw = Session("yhdw")
'取得登陆用户的级别
Dim stryhjb As String
stryhjb = Session("yhjb")
If stryhjb = "cjgly" Then
strsql = "select * from tab_htqp where lclx='合同签批'"
Else
strsql = "select * from tab_htqp where lclx='合同签批' and lxsqs_dw_yhm= '" & stryhm & "'"
End If
Dim cmd As New OleDbCommand(strsql, conn)
conn.Open()
Dim dr As OleDbDataReader = cmd.ExecuteReader()
Do While dr.Read()
If dr.Item("hthqb_kz_sfpf") = "否" Then

Else

End If

Loop
小孩快跑 2012-02-19
  • 打赏
  • 举报
回复
其实方法你都说出来啦。把数据拿出来在后台判断是否批复,如果是,把字体样式设置为红色,否则设置为绿色就行啦。至于怎么把数据拿出来,自己百度一下吧。百度很多这样的问题解决方法。
一路奔跑1314 2012-02-19
  • 打赏
  • 举报
回复
顶上去为的是等高手回复
一路奔跑1314 2012-02-19
  • 打赏
  • 举报
回复
自己再顶下

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧