又有一段时间没写东西了,再发一篇,坚持一下。
前几天写一个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>
<A 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>
<A 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>
前几天写一个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>
<A 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>
<A 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>
这样就成功了
通过这两个对比,这样一个先后问题就非常显而易见了。尽管这个细节大家以前可能比较清楚,但毕竟是自己的实践经验,感觉比较深刻,呵呵,就写出来了。

浙公网安备 33010602011771号