Asp.net标记文件

时间:2013-08-09 12:02:56

标签: asp.net webforms markup

我已经获得了一些c#代码,并且被要求创建一个与之一致的标记(.aspx)文件。

我不是在寻求帮助来编写代码,而是如何解决它。

以下是代码:

public partial class search : Page
{
protected override void OnLoad(EventArgs e)
{
  int defaultCategory;
  try
  {
     defaultCategory = Int32.Parse(Request.QueryString["CategoryId"]);
  }
  catch (Exception ex)
  {
     defaultCategory = -1;
  }

  Results.DataSource = GetResults(defaultCategory);
  Results.DataBind();

  if (!Page.IsPostBack)
  {
     CategoryList.DataSource = GetCategories();
     CategoryList.DataTextField = "Name";
     CategoryList.DataValueField = "Id";
     CategoryList.DataBind();
     CategoryList.Items.Insert(0, new ListItem("All", "-1"));
     CategoryList.SelectedIndex = CategoryList.Items.IndexOf(CategoryList.Items.FindByValue(defaultCategory.ToString()));
     base.OnLoad(e);
  }         

}

private void Search_Click(object sender, EventArgs e)
{
  Results.DataSource = GetResults(Convert.ToInt32(CategoryList.SelectedValue));
  Results.DataBind();
}

private DataTable GetCategories()
{
  if (Cache["AllCategories"] != null)
  {
     return (DataTable) Cache["AllCategories"];
  }

  SqlConnection connection = new SqlConnection("Data Source=DB;Initial Catalog=Store;User Id=User;Password=PW;");
  string sql = string.Format("SELECT * From Categories");
  SqlCommand command = new SqlCommand(sql, connection);

  SqlDataAdapter da = new SqlDataAdapter(command);
  DataTable dt = new DataTable();

  da.Fill(dt);
  Cache.Insert("AllCategories", dt, null, DateTime.Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration);

  connection.Dispose();
  return dt;

}
private DataTable GetResults(int categoryId)
{
  SqlConnection connection = new SqlConnection("Data Source=DB;Initial Catalog=Store;User Id=User;Password=PW;");
  string sql = string.Format("SELECT * FROM Products P INNER JOIN Categories C on P.CategoryId = C.Id WHERE C.Id = {0} OR {0} = -1", categoryId);
  SqlCommand command = new SqlCommand(sql, connection);

  SqlDataAdapter da = new SqlDataAdapter(command);
  DataTable dt = new DataTable();

  da.Fill(dt);

  connection.Dispose();
  return dt;
}
}

修改

在上面的代码中,什么是Results对象,CategoryList只是一个列表框?

1 个答案:

答案 0 :(得分:0)

正如Nilesh所说,这看起来像是一个搜索页面,您可以尝试使用Visual Studio创建一个Web表单,它只是将控件拖放到画布中,并为代码窗口中的控件创建标记。

此代码背后似乎在执行以下操作, 在页面加载Get请求(当它的!Page.IsPostBack)页面将使用GetCategories()获取类别并填充下拉列表“CategoryList”时所有类别名称(默认选择的一个是查询字符串中的defaultcategory ID)。

搜索按钮获取下拉列表的选定值并调用GetResults()以获取数据表以填充网格视图“结果”。因此,您需要在webform中使用这些名称的3个控件(下拉列表,按钮,Gridview)..