GridView1有数据啊,也DataBind()了,为什么页面显示不了GridView1

qq_21238897 2017-09-05 10:13:58
前台
<asp:GridView ID="GridView1" runat="server"
DataKeyNames="Pid,SC33005,SC33003,SC33002,SC33004" Height="55px"
Width="780px" AutoGenerateColumns="false" ShowHeaderWhenEmpty="True"
ViewStateMode="Enabled" >
<Columns>
<asp:TemplateField HeaderText="选择" ItemStyle-Width="36px">
<ItemTemplate>
<asp:CheckBox ID="checkbox1" runat="server"/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Pid" HeaderText="Pid"/>
<asp:BoundField DataField="SC33003" HeaderText="SC33003" ItemStyle-Width="100px" />
<asp:BoundField DataField="SC33004" HeaderText="SC33004" ItemStyle-Width="70px" />
<asp:BoundField DataField="SC33005" HeaderText="SC33005" ItemStyle-Width="70px" DataFormatString="{0:F2}" />
<asp:TemplateField HeaderText="调仓数量" ItemStyle-Width="72px">
<ItemTemplate>
<asp:TextBox ID="TxtNumber" runat="server" width="68px" BackColor="#c2e9e6" Text='<%#Eval("SC33005","{0:F0}")%>' ></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="SC33001" HeaderText="SC33001" ItemStyle-Width="80px" />
<asp:BoundField DataField="SC33009" HeaderText="SC33009" ItemStyle-Width="100px" />
<asp:BoundField DataField="SC33013" HeaderText="SC33013" ItemStyle-Width="80px" DataFormatString="{0:yyyy-MM-dd}"/>
<asp:BoundField DataField="SC33019" HeaderText="SC33019" ItemStyle-Width="80px" />
<asp:BoundField DataField="SC33038" HeaderText="SC33038" ItemStyle-Width="75px" />
</Columns>
</asp:GridView>
后台
string warehouse = TextBox2.Text.ToString().Trim();
string batch = TextBox3.Text.ToString().Trim();
string cc = RadioButtonList1.SelectedValue.ToString();
string stock = TextBox1.Text.ToString().Trim();
P36WAP03_WCF.WEBWCFClient webwcf = new P36WAP03_WCF.WEBWCFClient();
DataSet ds = new DataSet();
ds = webwcf.Get_InvStockInfo(cc,stock, warehouse, batch);
if (ds.Tables[0].Rows.Count == 0)
{
//GridView1.Visible = true;
TextBox2.Text = "";
TextBox3.Text = "";
Alert.Show("未查询到数据,请检查!");
return;
}
else
{
// Grid1.DataSource = webwcf.Get_InvStockInfo(cc, stock, warehouse, batch);
GridView1.DataSource = ds;
GridView1.DataBind();
}
...全文
874 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_21238897 2017-09-06
  • 打赏
  • 举报
回复
问题解决了,谢谢大家热心帮助。原因是ext:grid改成asp:gridview后,上面的按钮ext:buttom 没改成asp:buttom,结果导致页面只显示ext:buttom没显示asp:gridview。是控件的问题,不是数据的问题。
  • 打赏
  • 举报
回复
自定义数据源看下
qq_21238897 2017-09-05
  • 打赏
  • 举报
回复
table 放的是查询条件,GridView在table下面
  • 打赏
  • 举报
回复
那么你从你的 #6 那里贴的调试画面上,自己进一步调试吧,看看 Visible 等等属性是什么值。
  • 打赏
  • 举报
回复
哦,你的前边的 <table> 是查询表单。
  • 打赏
  • 举报
回复
引用 16 楼 qq_21238897 的回复:
哦,好的浏览器调试是这样的
测试文本能输出,那么不由得不让人怀疑前边的 <table> 就是 GridView1。如果是的话,那么你的标题就误导了。
qq_21238897 2017-09-05
  • 打赏
  • 举报
回复
引用 14 楼 sp1234 的回复:
[quote=引用 12 楼 qq_21238897 的回复:]
[quote=引用 11 楼 sp1234 的回复:]
既然 GridView1.Rows 有两行,那么就要调试浏览器端的 html 源代码,查看这两行输出了什么。

开发技术需要到前端 html 调试这一步。

我是个小白,前端之前也调试过了,调试中gridview这段源码没有显示,而上面的代码能显示[/quote]

如果 GridView1 不在输出的 html 中,那么你在 GridView1 前边随便写个
!##$%@%@
能输出到 html 中吗?

自己尽量多展示一些调试内容,不要总是等别人来问你哦。[/quote]
哦,好的浏览器调试是这样的
  • 打赏
  • 举报
回复
如果你随便写个
abcdef
也不在输出 html 中,那你需要刷新一下浏览器端缓存。
  • 打赏
  • 举报
回复
引用 12 楼 qq_21238897 的回复:
[quote=引用 11 楼 sp1234 的回复:] 既然 GridView1.Rows 有两行,那么就要调试浏览器端的 html 源代码,查看这两行输出了什么。 开发技术需要到前端 html 调试这一步。
我是个小白,前端之前也调试过了,调试中gridview这段源码没有显示,而上面的代码能显示[/quote] 如果 GridView1 不在输出的 html 中,那么你在 GridView1 前边随便写个
!##$%@%@
能输出到 html 中吗? 自己尽量多展示一些调试内容,不要总是等别人来问你哦。
qq_21238897 2017-09-05
  • 打赏
  • 举报
回复
原来的是用ext:grid写的,后来发现这种grid无法全选就用asp:GridView来写
<ext:Grid ID="Grid1" runat="server" EnableCheckBoxSelect="false" EnableMultiSelect="false"
        EnableRowNumber="true" DataKeyNames="Pid,SC33005,SC33003,SC33002,SC33004" 
        Title="列表"  RowHeight="55px"  ExpandAllRowExpanders="true"  AutoHeight="true"  
        EnableMouseOverColor="false" Width="780px" AutoScroll="true">
           <Columns>
                <ext:TemplateField HeaderText="选择" Width="36px"> 
                    <ItemTemplate>
                        <asp:CheckBox ID="checkbox1" runat="server"/>
                    </ItemTemplate>
                </ext:TemplateField>
                <ext:BoundField DataField="Pid" ColumnID="Pid" Hidden="true" />              
                <ext:BoundField DataField="SC33003" HeaderText="SC33003" width="100px"  />  
                <ext:BoundField DataField="SC33004" HeaderText="SC33004"  Width="70px" />  
                <ext:BoundField DataField="SC33005" HeaderText="SC33005" Width="70px" DataFormatString="{0:F2}" /> 
                <ext:TemplateField HeaderText="调仓数量"  Width="72px">
                    <ItemTemplate>
                        <asp:TextBox ID="TxtNumber" runat="server" width="68px" BackColor="#c2e9e6" Text='<%#Eval("SC33005","{0:F0}")%>' ></asp:TextBox>
                    </ItemTemplate>
                </ext:TemplateField>
                <ext:BoundField DataField="SC33001" HeaderText="SC33001" width="80px"  />  
                <ext:BoundField DataField="SC33009" HeaderText="SC33009"  Width="100px" />  
                <ext:BoundField DataField="SC33013" HeaderText="SC33013"  DataFormatString="{0:yyyy-MM-dd}" Width="80px" />  
                <ext:BoundField DataField="SC33019" HeaderText="SC33019"  Width="80px" />  
                <ext:BoundField DataField="SC33038" HeaderText="SC33038"  Width="75px" />
                <ext:BoundField DataField="SC33002" HeaderText="SC33002" Width="65px"/>    
           </Columns>
    </ext:Grid>
我就改成
<asp:GridView ID="GridView1" runat="server" 
            DataKeyNames="Pid,SC33005,SC33003,SC33002,SC33004" Height="55px"
            Width="780px" AutoGenerateColumns="false" >
            <Columns>
                <asp:TemplateField HeaderText="选择" ItemStyle-Width="36px"> 
                    <ItemTemplate>
                        <asp:CheckBox ID="checkbox1" runat="server"/>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="Pid" HeaderText="Pid"/>              
                <asp:BoundField DataField="SC33003" HeaderText="SC33003" ItemStyle-Width="100px"  />  
                <asp:BoundField DataField="SC33004" HeaderText="SC33004" ItemStyle-Width="70px" />  
                <asp:BoundField DataField="SC33005" HeaderText="SC33005" ItemStyle-Width="70px" DataFormatString="{0:F2}" /> 
                <asp:TemplateField HeaderText="调仓数量" ItemStyle-Width="72px">
                    <ItemTemplate>
                        <asp:TextBox ID="TxtNumber" runat="server" width="68px" BackColor="#c2e9e6" Text='<%#Eval("SC33005","{0:F0}")%>' ></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="SC33001" HeaderText="SC33001" ItemStyle-Width="80px"  />  
                <asp:BoundField DataField="SC33009" HeaderText="SC33009" ItemStyle-Width="100px" />  
                <asp:BoundField DataField="SC33013" HeaderText="SC33013" ItemStyle-Width="80px" DataFormatString="{0:yyyy-MM-dd}"/>  
                <asp:BoundField DataField="SC33019" HeaderText="SC33019" ItemStyle-Width="80px" />  
                <asp:BoundField DataField="SC33038" HeaderText="SC33038" ItemStyle-Width="75px" />
                <asp:BoundField DataField="SC33002" HeaderText="SC33002" ItemStyle-Width="65px"/> 
            </Columns>
        </asp:GridView>
qq_21238897 2017-09-05
  • 打赏
  • 举报
回复
引用 11 楼 sp1234 的回复:
既然 GridView1.Rows 有两行,那么就要调试浏览器端的 html 源代码,查看这两行输出了什么。 开发技术需要到前端 html 调试这一步。
我是个小白,前端之前也调试过了,调试中gridview这段源码没有显示,而上面的代码能显示
  • 打赏
  • 举报
回复
既然 GridView1.Rows 有两行,那么就要调试浏览器端的 html 源代码,查看这两行输出了什么。 开发技术需要到前端 html 调试这一步。
qq_21238897 2017-09-05
  • 打赏
  • 举报
回复
引用 7 楼 duanzi_peng 的回复:
[quote=引用 5 楼 duanzi_peng 的回复:] GridView1有数据啊,也DataBind()了 -》确定ds是有数据的。另外 DataKeyNames="Pid,SC33005,SC33003,SC33002,SC33004" 中的 SC33002 没有对应的 BoundField吧。
GridView1.DataSource = ds; GridView1.DataBind(); -》 GridView1.DataSource = ds.Tables[0]; GridView1.DataBind(); [/quote]这个我原来试过了,也是出不来
  • 打赏
  • 举报
回复
你如果确定在 asp.net 端响应的最后一个事件处理代码中 GridView1.Rows 有两行,那么就不用纠结 asp.net 代码问题,找找更表面的环境问题。例如通过浏览器端 html 源代码来调试浏览器端渲染问题,区别不同中间环节。 另外,asp.net 程序基本的编程模式,就是在 page_load 中要有
if( !IsPostback)
{
    .....
}
判断。当你随便拖入一个 Button 制造回发,并且调试时不断点击它实际回发页面请求时,你会发现正规的 asp.net 页面并不会一遍遍地去查询数据库、绑定 GridView。你可以看看那些好的正规教程,大型企业级应用程序,在我说这这个基本的 Button 回发测试下都是如此。 因为 asp.net 基本的机制就是自动保存 ViewState 并且在回发刷新时自动化地回填 GRidView 中所有行、所有列的数据。并不需要涉及到数据库查询、重新绑定控件。 只有一些不太好的博客文章上面的代码,才会在 Page_Load 中一遍遍地去查询数据库、绑定控件。而这是错误的 asp.net 编程方式。
qq_21238897 2017-09-05
  • 打赏
  • 举报
回复
<asp:BoundField DataField="SC33002" HeaderText="SC33002" ItemStyle-Width="65px"/> 这句漏了,但是还是查不出来
exception92 2017-09-05
  • 打赏
  • 举报
回复
引用 5 楼 duanzi_peng 的回复:
GridView1有数据啊,也DataBind()了 -》确定ds是有数据的。另外 DataKeyNames="Pid,SC33005,SC33003,SC33002,SC33004" 中的 SC33002 没有对应的 BoundField吧。
GridView1.DataSource = ds; GridView1.DataBind(); -》 GridView1.DataSource = ds.Tables[0]; GridView1.DataBind();
qq_21238897 2017-09-05
  • 打赏
  • 举报
回复
exception92 2017-09-05
  • 打赏
  • 举报
回复
GridView1有数据啊,也DataBind()了 -》确定ds是有数据的。另外 DataKeyNames="Pid,SC33005,SC33003,SC33002,SC33004" 中的 SC33002 没有对应的 BoundField吧。
IEEE_China 2017-09-05
  • 打赏
  • 举报
回复
仔细检查检查吧

//
<asp:GridView ID="GridView1" runat="server"
DataKeyNames="SC001,SC002,SC003" Height="55px"
Width="780px" AutoGenerateColumns="false" ShowHeaderWhenEmpty="True"
ViewStateMode="Enabled" >
<Columns>
<asp:TemplateField HeaderText="选择" ItemStyle-Width="36px">
<ItemTemplate>
<asp:CheckBox ID="checkbox1" runat="server"/>
</ItemTemplate>
</asp:TemplateField>

<asp:BoundField DataField="SC001" HeaderText="SC001" ItemStyle-Width="100px" />

<asp:TemplateField HeaderText="调仓数量" ItemStyle-Width="72px">
<ItemTemplate>
<asp:TextBox ID="TxtNumber" runat="server" width="68px" BackColor="#c2e9e6" Text='<%#Eval("SC002","{0:F0}")%>' ></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="SC003" HeaderText="SC003" ItemStyle-Width="80px" />

</Columns>
</asp:GridView>


protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();

dt.Columns.Add("SC001", typeof(string));
dt.Columns.Add("SC002", typeof(string));
dt.Columns.Add("SC003", typeof(string));
for(int i=0;i<10;i++)
{
dt.Rows.Add(i*1, i*2, i*3);
}
GridView1.DataSource = dt;
GridView1.DataBind();
}


qq_21238897 2017-09-05
  • 打赏
  • 举报
回复
我一点截图就跳掉了,截不到图。。
加载更多回复(4)

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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