C# と ASP.NET を使用して Web アプリケーションに取り組んでいます。同じページのテキストボックスを介してグリッドビューにデータをバインドしています。「保存」ボタンのクリックイベントにバインディングメソッドを記述しました。
button_click
さて、「保存」イベントを介してテキストボックスからグリッドビューにデータを保存するときにページを更新すると、グリッドビューが重複した行に再びバインドされるのは本当に奇妙なことです。Firefox、Chrome、および IE 8 でページを読み込もうとしましたが、結果は否定的です....
なぜそれが起こっているのかを誰かに知らせて、それを解決するように案内してもらえますか....
これは私のC#コードです:
string con = ConfigurationSettings.AppSettings["ConnectionStrings"];
protected void Page_Load(オブジェクト送信者, EventArgs e) {
tbladdasset.Visible = false;
btnsaveasset.Enabled = false;
lblErrMsg.Text = "";
if (!IsPostBack)
{
bindassets("", "");
ViewState["sortOrder"] = "";
}
}
private void bindassets(string sortExp, string sortDir)
{
try
{
SqlConnection con1 = new SqlConnection(con);
con1.Open();
SqlCommand cmd = new SqlCommand("select Description,CONVERT(VARCHAR(10), RecievedDate, 101) as DateRecieved,cost,Modelno,Quantity from Asset", con1);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
con1.Close();
if (dt.Rows.Count > 0)
{
DataView dv = dt.DefaultView;
if (sortExp != string.Empty)
{
dv.Sort = string.Format("{0} {1}", sortExp, sortDir);
}
grdvAssets.DataSource = dv;
grdvAssets.DataBind();
}
else
{
lblErrMsg.Text = "No data found...";
}
btnsaveasset.Enabled = false;
tbladdasset.Visible = false;
}
catch
{
lblErrMsg.Text = "Failed to connect server...";
}
}
protected void btnaddnew_Click(object sender, EventArgs e)
{
tbladdasset.Visible = true;
btnsaveasset.Enabled = true;
lblErrMsg.Text = "";
txtdescription.Text = "";
txtdtrecieved.Text = "";
txtcost.Text = "";
txtmodelno.Text = "";
txtquantity.Text = "";
}
protected void btnsaveasset_Click(object sender, EventArgs e)
{
if (txtdescription.Text != "" && txtdtrecieved.Text != "" && txtcost.Text != "" && txtmodelno.Text != "" && txtquantity.Text != "")
{
try
{
string desc= txtdescription.Text;
DateTime dtrecd = Convert.ToDateTime(txtdtrecieved.Text);
string cost = txtcost.Text;
string modelno = txtmodelno.Text;
double quantity = Convert.ToDouble(txtquantity.Text);
SqlConnection sqlcon = new SqlConnection(con);
sqlcon.Open();
string save = "Insert into Asset(Description,Recieveddate,cost,Modelno,Quantity)values(@desc,@date,@cost,@modelno,@quantity)";
SqlCommand cmd = new SqlCommand(save, sqlcon);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@desc", desc);
cmd.Parameters.Add("@date", dtrecd);
cmd.Parameters.Add("@cost", cost);
cmd.Parameters.Add("@modelno", modelno);
cmd.Parameters.Add("@quantity", quantity);
cmd.ExecuteNonQuery();
sqlcon.Close();
bindassets("", "");
btnsaveasset.Enabled = false;
txtdescription.Text = "";
txtdtrecieved.Text = "";
txtcost.Text = "";
txtmodelno.Text = "";
txtquantity.Text = "";
lblErrMsg.Text = "data inserted successfully..";
}
catch
{
lblErrMsg.Text = "Please enter valid data and try again...";
}
}
else
{
lblErrMsg.Text = "Please enter valid data and try again...";
}
}
protected void grdvAssets_Sorting(object sender, GridViewSortEventArgs e)
{
bindassets(e.SortExpression, sortOrder);
}
public string sortOrder
{
get
{
if (ViewState["sortOrder"].ToString() == "desc")
{
ViewState["sortOrder"] = "asc";
}
else
{
ViewState["sortOrder"] = "desc";
}
return ViewState["sortOrder"].ToString();
}
set
{
ViewState["sortOrder"] = value;
}
}
誰でも私を助けてください.....よろしくお願いします..