C#网页程序:1、
我写了个类来方便读取数据库中的数据,根据我传入的sql语句就返回一个DataTable类型的数据,数据就存放在里面,然后就DataBind到指定的控件。数据返回后,在类中conn连接数据库的之类的,都是Close了的,但是在显示网业的时候,随着我读的数据越多<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="xxxxx"
这个后面的数据也跟着越多,请问我要如何做,这个才有很少的内容??2、比如我的数据库中有如下字段:compname,istop。
取10条记录进行读出来,我想在网页显示数据的时候,根据,istop是否为1来在后面显示一个为"new" 的图片,这个istop我不知道怎么在aspx的<%%>标签中读出来。我现在用的方法是,先在返回的DataTable中增加一列,比如为topimg;然后扫描DataTable.Row,如果发现istop=1的话,就把新增的topimg字段值设置为<img src=new.jpg> 否则就设置为空,然后就在网页中用:<%#DataBinder.Eval(Container.DataItem, "topimg") %>显示字段内容但是我觉得这样做多扫描了一次DataTable,因为在Bind数据的时候肯定是要再扫描一次的,请问有没有好的方法呢???谢谢各位的

解决方案 »

  1.   

    1.界面上需要维护的控件的状态信息越多,这个<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="xxxxx">这个后面的数据也跟着越多 你可以禁用页面或者某些控件的ViewState2.类似如下的方法
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
    DataRowView row;
    Image i; if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
    row = (DataRowView)e.Item.DataItem;
    if (Convert.ToInt32(row["istop"]) == 1)
    {
    i = (Image)e.Item.FindControl("Image1");
    if(i != null)
    {
    i.ImageUrl = "new.jpg";
    i.Visible = true;
    }
    else
    {
    i.Visible = false;
    }
    }
    }
    }
      

  2.   

    打扰一下
    e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem
    是什么意思呢??
    谢谢高歌
      

  3.   

    麻烦还帮看看        <asp:DataList ID="test" runat="server">
            <ItemTemplate>
            <asp:Image ID="img1" runat="server" />
            </ItemTemplate>
            </asp:DataList>    protected void test_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            Image i;
            i = (Image)e.Item.FindControl("img1");
            if (i != null)
                i.ImageUrl = "images//hot1.gif";为啥不行啊???
        }
      

  4.   

    发现数据绑定的时候,程序没有执行 test_ItemDataBound()这个过程,请问是什么原因??
      

  5.   

    哎,我真是笨到家了,在控件上忘记了: OnItemDataBound="test_ItemDataBound" 这一句各位,不好意思了