导航

asp.net控件中的一个顺序问题

Posted on 2004-10-09 10:56  ChenRui  阅读(2807)  评论(9)    收藏  举报
又有一段时间没写东西了,再发一篇,坚持一下。
前几天写一个website时,需要做一个自定义控件。原理很简单,就是从数据库读出,并以自己的格式显示。
第一种做法:
在Page_Load事件生成DataSet
代码如下
private void Page_Load(object sender, System.EventArgs e)
        
{
            SqlConnection myConnection 
= new SqlConnection(ConfigurationSettings.AppSettings["SqlConn"]);
            
string CommandText = "select top 10 vouch.*,book.bookID,book.bookName,book.Price from Vouch join book on Vouch.BookID=Book.BookID where vouch.type=" +type.ToString()+ " order by vouch.vouchID desc";
            SqlDataAdapter myAdapter 
= new SqlDataAdapter(CommandText, myConnection);
            DataSet ds 
= new DataSet();
        
            myAdapter.Fill(ds);
                    
        }
然后在页面中显示类似的数据
<TD class="h18" width="34%">
        <
SPAN class="p14">
            <
STRONG>
                <
href="book/book.aspx?bookID=<%=ds.Tables[0].Rows[0]["bookID"].ToString()%>" title="<%=ds.Tables[0].Rows[0]["bookName"].ToString()%>">《<%=CutString(ds.Tables[0].Rows[0]["bookName"].ToString())%>
                            
<BR>
          
   </A>
            </
STRONG>
        </
SPAN>
   
</TD>

这样做不能达到预期的效果

如果改用控件的属性来做的话,就成功了。
这就是第二种做法:

    public int type;
    

        
public int VouchType
        
{
            
get 
            
{
                
return type;
            }

            
set
            
{
                type 
= value;
            }

        }


        
private void Page_Load(object sender, System.EventArgs e)
        
{
        
        }

        
private DataSet GetDataSet()
        
{
            SqlConnection myConnection 
= new SqlConnection(ConfigurationSettings.AppSettings["SqlConn"]);
            
string CommandText = "select top 10 vouch.*,book.bookID,book.bookName,book.Price from Vouch join book on Vouch.BookID=Book.BookID where vouch.type=" +type.ToString()+ " order by vouch.vouchID desc";
            SqlDataAdapter myAdapter 
= new SqlDataAdapter(CommandText, myConnection);
            DataSet ds 
= new DataSet();
        
            myAdapter.Fill(ds);
            
return ds;
        }


        
public DataSet source
        
{
            
get
            
{
                
return GetDataSet();
            }

        }
在页面中作类似的调用
<TD class="h18" width="34%">
            <
SPAN class="p14">
                <
STRONG>
                        <
href="book/book.aspx?bookID=<%=this.source.Tables[0].Rows[0]["bookID"].ToString()%>" title="<%=this.source.Tables[0].Rows[0]["bookName"].ToString()%>">《<%=CutString(this.source.Tables[0].Rows[0]["bookName"].ToString())%>
                            
<BR>
                       
</A>
                </
STRONG>
            </
SPAN>
</TD>



这样就成功了


通过这两个对比,这样一个先后问题就非常显而易见了。尽管这个细节大家以前可能比较清楚,但毕竟是自己的实践经验,感觉比较深刻,呵呵,就写出来了。