困扰了一早上的gridview展现数据的问题,求高人帮忙
前台页面:
<div id="query_message_area" runat="server">
<asp:GridView ID="GridView2" runat="server"
AutoGenerateColumns="False" CellPadding="4"
ForeColor="#333333" GridLines="None" Height="50px" DataKeyNames ="Id" Width="430px"
style="text-align: center" onrowcommand="GridView2_RowCommand"
>
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="Department" HeaderText="部门" />
<asp:BoundField DataField="Name" HeaderText="名称" />
<asp:BoundField DataField="completecode" HeaderText="完全码" />
<asp:BoundField DataField="Zhuxiaobiaozhi" HeaderText="状态" />
<asp:TemplateField HeaderText="操作类型" ShowHeader="False">
<ItemTemplate>
<asp:Button ID="Button1" runat="server" CommandArgument='<%("Id")%>' CommandName="zhuxiao" Text="申请注销" OnClientClick="return confirm('你确认注销该条申请码?');" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
</asp:GridView>
</div>
后台:
protected void btn_zhuxiao_Click(object sender, EventArgs e)
{
string s = this.tb_accode.Text.Trim();
List<Codes> list = new List<Codes>();
list = CodeManager.GetAllACCodes1(s);
if (list.Count == 0)
{
this.query_message_area.InnerHtml = "<br/><br/>您查询的AC码状态可能为已审批或者待审批状态,请在代码查询界面查询,或者在下面总表中查看!";
// this.GridView2.Visible = false;
this.GridView1.Visible = true;
CodeDataBind();
}
else
{
this.query_message_area.InnerHtml = "";
this.GridView2.Visible = true;
GridView2.DataSource = list;
GridView2.DataBind();
CodeDataBind();
}
}
在先查询符合else条件的记录,可以显示;
查新符合if条件的也可以显示
但是,先查询if条件的,然后再查询else条件的就无法显示,gridview出不来呀!
--------------------编程问答-------------------- 没看出啥毛病啊,友情帮顶吧。分数好高啊,哈哈 --------------------编程问答-------------------- 你的this.GridView1没有设置DataSource,也没有DataBind --------------------编程问答-------------------- 2楼+1 --------------------编程问答--------------------
这种情况最好就是自己一步一步的跟
具体你的代码 注意
1.Visible是true和false的流程是否准确无误
2.绑定的数据源是否正确
3.绑定的数据源是否有数据 --------------------编程问答-------------------- 数据都没有任何问题,跟踪的时候,数据源里已经有数据了,就是显示不出来,那个gridview2第一次可以显示出不来,重复查询的时候也能出来,就是先查询其他状态,返回来再查询这个状态的时候,就出不来了 --------------------编程问答-------------------- 数据都没有任何问题,跟踪的时候,数据源里已经有数据了,就是显示不出来,那个gridview2第一次可以显示出不来,重复查询的时候也能出来,就是先查询其他状态,返回来再查询这个状态的时候,就出不来了 --------------------编程问答--------------------
照这样说,楼主的sql语句拼接的有问题 --------------------编程问答-------------------- <asp:Button ID="Button1" runat="server" CommandArgument='<%("Id")%>' CommandName="zhuxiao" Text="申请注销" OnClientClick="return confirm('你确认注销该条申请码?');" />
这里面一开始是这样写的:
CommandArgument='<%#Eval("Id")%>'
结果总是报如下错误:
Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。
--------------------编程问答-------------------- 有没有可能是没有刷新页面啊,页面没有及时更新到最新的状态 --------------------编程问答-------------------- +1 --------------------编程问答-------------------- 不会啦,
页面刷新没问题吧,条件1能查出东西来,条件2也能查出来,但是,先查条件1再查条件2的时候,就没东西了,跟踪的时候,数据源里的List里面已经能看到数据了!页面死活呈现不出来!在databing()的时候,报错如下:Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。
--------------------编程问答-------------------- 加个<asp:BoundField DataField="ID" HeaderText="" Visible="False"/>
试试 --------------------编程问答--------------------
红色绑定的语法CommandArgument='<%#Eval("Id")%>' --------------------编程问答--------------------
错误依旧! --------------------编程问答--------------------
我一开始就是这样写的呀,报如下错误:
报错如下:Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。
--------------------编程问答-------------------- 发现有个类似帖子
http://topic.csdn.net/u/20110109/15/BE2B0187-1979-4004-A12B-0D2849041244.html --------------------编程问答--------------------
看过了,也试过了,没用! --------------------编程问答-------------------- CodeDataBind() 这个方法里面代码是什么 --------------------编程问答--------------------
protected void CodeDataBind()
{
List<Codes> list = new List<Codes>();
list = CodeManager.GetAllACCodeByIsApprove1("1");
if (list.Count == 0)
{
this.message_dataview_area.InnerHtml = "<br/><br/><br/><br/>暂无数据!";
// this.GridView1.Visible = false;
}
else
{
GridView1.DataSource = list;
GridView1.DataBind();
}
} --------------------编程问答-------------------- grid 1和grid2 会不会覆盖了 --------------------编程问答-------------------- 有没有使用UpdatePanel,btn_zhuxiao与GV是不是被它分离了 --------------------编程问答--------------------
没有呀,第一次查询就可以正常出现呀!如果不查询另外一个状态的话,重复查询也能出来,就是一查询另外一个状态的记录过后,再查询这个,就出不来了哦! --------------------编程问答--------------------
没用UpdatePanel --------------------编程问答-------------------- 两个GridView覆盖啦 --------------------编程问答-------------------- 把else{}中的CodeDataBind(); 去掉
--------------------编程问答-------------------- list.Count==0,没获取到数据
补充:.NET技术 , ASP.NET