【发布时间】:2014-02-11 15:20:42
【问题描述】:
我在 ASP.NET 中创建了一个动态控制脚本。现在正如您在下面的照片中看到的那样......
现在我要做的是从 UserDontrol 生成的内容,带下划线的值我想将它们存储在数据库中。我创建了一个公共类,但在数据库中它存储为空值(不是 NULL)。
这些是代码:
.ascx.cs 文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
public partial class UserControl_ContactDetails : System.Web.UI.UserControl
{
public String TextProperty
{
get
{
return LabelCmimi.Text;
}
set
{
LabelCmimi.Text = value;
}
}
public void Page_Load(object sender, EventArgs e)
{
//if(Page.IsPostBack)
//{
DropDownListArtikulli.Text = Request.Form[DropDownListArtikulli.UniqueID];
LabelCmimi.Text = Request.Form[LabelCmimi.UniqueID];
TextBoxSasia.Text = Request.Form[TextBoxSasia.UniqueID];
LabelVlera.Text = Request.Form[LabelVlera.UniqueID];
//}
Cmimi();
Vlera();
Session["Artikulli"] = DropDownListArtikulli.SelectedItem.ToString();
Session["Cmimi"] = LabelCmimi.Text;
Session["Sasia"] = TextBoxSasia.Text;
Session["Vlera"] = LabelVlera.Text;
}
public void Cmimi()
{
DataTable listaArtikujt = new DataTable();
using (SqlConnection lidhje = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString))
{
try
{
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM [Artikujt]", lidhje);
adapter.Fill(listaArtikujt);
DropDownListArtikulli.DataSource = listaArtikujt;
DropDownListArtikulli.DataTextField = "Artikulli";
DropDownListArtikulli.DataValueField = "Cmimi";
DropDownListArtikulli.DataBind();
LabelCmimi.Text = DropDownListArtikulli.SelectedValue.ToString();
}
catch (Exception ex)
{
Response.Write("Gabim:" + ex.ToString());
}
}
}
public void Vlera()
{
if(!string.IsNullOrEmpty(TextBoxSasia.Text))
{
LabelVlera.Text = TextBoxSasia.Text.ToString();
int a = Convert.ToInt32(LabelCmimi.Text);
int b = Convert.ToInt32(LabelVlera.Text);
int c = a * b;
LabelVlera.Text = c.ToString();
Session["Totali"] = (Session["Totali"] == null) ? 0 : Convert.ToInt32(Session["Totali"].ToString()) + c;
}
}
}
.aspx.cs 文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
public partial class DynamicControl : System.Web.UI.Page
{
private const string VIEWSTATEKEY = "ContactCount";
protected void Page_Load(object sender, EventArgs e)
{
//Set the number of default controls
ViewState[VIEWSTATEKEY] = ViewState[VIEWSTATEKEY] == null ? 1 : ViewState[VIEWSTATEKEY];
Session["Totali"] = 0;
//Load the contact control based on Vewstate key
LoadContactControls();
}
private void LoadContactControls()
{
for (int i = 0; i < int.Parse(ViewState[VIEWSTATEKEY].ToString()); i++)
{
phContactDetails.Controls.Add(LoadControl("~/UserControl/ContactDetails.ascx"));
}
}
protected void btnAddMore_Click(object sender, EventArgs e)
{
ViewState[VIEWSTATEKEY] = int.Parse(ViewState[VIEWSTATEKEY].ToString()) + 1;
LoadContactControls();
}
protected void Button1_Click(object sender, EventArgs e)
{
}
protected void OK_Click(object sender, EventArgs e)
{
LabelTotal.Text = Session["Totali"].ToString();
}
}
问题是......当我按下按钮“Dergo”(Button1_Click)时,如何将值存储在数据库中?
附:一位朋友告诉我,问题是用户控件在我的 Page_Load 事件中重新加载,所以我得到的值总是空的。 如果我想获取值,他建议我在我的用户控件中添加一个事件,然后从事件中获取我的输入值。并参考链接http://msdn.microsoft.com/en-us/library/fb3w5b53(v=vs.100).aspx
我接受了他的建议,但两周前我开始学习 ASP.NET,但没有成功。任何人都可以帮我提供更多信息或编写代码吗? 谢谢。
【问题讨论】:
-
注意:额外使用
viewstate会使你的页面变重,因为viewstate在页面上保存它的项目,如果你得到view page source你可以看到viewstate,你也可以将viewstate设置为 false,在您不需要viewstate的页面上使您的页面变亮
标签: c# asp.net .net user-controls