[英]C# passing information
對不起提前我試着盡可能地解釋這個....
我有2個asp.net頁面,一個名為membermaster,第二個名為memberdetails。 我創建了一個包含2個函數的類庫
我的第一個函數根據搜索結果返回一個列表...
我在gridviews第一列添加了一個linkbutton,當點擊它時,它會通過查詢字符串傳遞membergen。 我想做的是我創建的第二個功能
public DataTable GetMembers(int MEMBERSHIPGEN)
{
DataTable table = null;
SqlConnection con = null;
SqlCommand cmd = null;
SqlDataAdapter ad = null;
SqlParameter prm = null;
try
{
table = new DataTable();
using (con = new SqlConnection(connectionString))
{
using (cmd = new SqlCommand("usp_getmemberdetail", con))
{
using (ad = new SqlDataAdapter(cmd))
{
prm = new SqlParameter("@MEMBERSHIPGEN", SqlDbType.Int);
prm.Value = MEMBERSHIPGEN;
cmd.Parameters.Add(prm);
ad.Fill(table);
}
}
}
}
catch (Exception ex)
{
//write your exception code here
}
return table;
}
試圖嘗試將membergen發送給它並返回結果。 但是一旦我編譯DLL並將其添加到我的項目中,我不確定如何引用此函數來填充單個文本框和標簽的信息。
我想要做的是當用戶單擊gridview上的viewdetails按鈕時,我可以使用我通過查詢字符串傳遞的membergen來通過存儲過程填充頁面,但智能將存儲在DLL中。
您可能希望您的方法返回一個值。 目前返回類型是void
,因此當調用堆棧離開方法時,它在內部填充的值就會消失。 聽起來你想要這樣的東西:
public DataTable GetMembers(int MEMBERSHIPGEN)
然后,在您的方法中,在您填充DataTable
並退出using
塊之后,您將執行以下操作:
return table;
這會將DataTable
返回到任何調用方法的地方。 所以你的頁面會有這樣的東西:
DataTable table = GetMembers(membershipgen);
因此該頁面將負責:
membershipgen
值(查詢字符串) 該方法負責:
這是朝着“ 關注點分離 ”這一總體目標邁出的良好的第一步,這是一件非常好的事情。 您可以通過始終問自己每個方法,類等應該負責的內容繼續沿着這條路走下去。 例如,您的GetMembers
方法還應負責確保傳遞給它的值有效,或者從它返回的值不為null
。
一種方法可能是構建按鈕,以便它導航到以下行的URL:
HTTP://localhost/DetailPage.aspx membershipgen = 4
然后在DetailPage.aspx的加載中:
Page_Load(Object sender, EventArgs e)
{
if (!this.IsPostback)
{
int membershipgen;
if (int.TryParse(Request.QueryString["membershipgen"], out membershipgen)
{
//Get the data (replace DataAccess with the name of your data access class).
//Also, you probably want to change GetMembers so it returns the data.
DataTable table = DataAccess.GetMembers(membershipgen);
//TODO: Display the results
}
}
else
{
//Display an error
}
}
您需要更改GetMembers以返回數據而不是void。 如果您想使用DataTables,您只需將代碼修改為:
public DataTable GetMembers(int MEMBERSHIPGEN)
{
DataTable table = new DataTable();
SqlConnection con = new SqlConnection(connectionString);
using (SqlCommand cmd = new SqlCommand("usp_getmemberdetail", con))
{
using (SqlDataAdapter ad = new SqlDataAdapter(cmd))
{
SqlParameter prm = new SqlParameter("@MEMBERSHIPGEN", SqlDbType.Int);
prm.Value = MEMBERSHIPGEN;
cmd.Parameters.Add(prm);
ad.Fill(table);
return table;
}
然后在你的Page_Load中它可能是這樣的(比希望更強大):
{
DataTable table = yourDll.GetMembers(Convert.ToInt32(Request.QueryString["membership"]));
label1.Text = Convert.ToString(table.rows[0]["Name"]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.