-1

剣道ドロップダウンがあり、選択したID値で、ボタンクリックイベントでデータベースから特定の行のデータを更新したいのですが、データが更新されず、古い値が何度も表示されます。方法を教えてください。私のコードは

<script src="Js/jquery1.7.1.min.js" type="text/javascript"></script>
<script src="CSS/kendo.min.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
  $(document).ready(function(){
    $("#multi").kendoDropDownList();
    $("#editor").kendoEditor();
 });
</script>
<form id="form1" runat="server">
<div>
   Select Template: <select id="multi" runat="server"></select>
</div>
<br />
<div>
  Template Name: <input type="text" id="txtName" name="Name" runat="server" />
</div>
<div>
Description:<textarea name="comments" id="txtComment" cols="25" rows="5"   
runat="server"></textarea>
<br />
</div>
<div>
Active: <input type="checkbox" id="chkActive" name="vehicle" runat="server" />
</div>
<div id="example" class="k-content">
<textarea id="editor" rows="10" cols="30" style="width:740px;height:440px"   
runat="server"></textarea>
</div>
<div>

<button type="button" id="btnUpdate" runat="server"   onserverclick="    
btnUpdate_onclick" >Save</button>

</div>
</form>
</body>

私の .cs コードは

 protected void Page_Load(object sender, EventArgs e)
{


    Bind();
}

private void Bind()
{
    SqlConnection con = new SqlConnection("Data Source=ST0022;Initial 
Catalog=QuickMove_Globe;User ID=sa;Password=good");
    SqlDataAdapter da = new SqlDataAdapter();
    DataSet ds = new DataSet();
    da.SelectCommand = new SqlCommand("Select * from Templates", con);
    con.Open();
    da.SelectCommand.ExecuteNonQuery();
    da.Fill(ds);
    con.Close();
    multi.DataTextField = "ID";
    multi.DataValueField = "Name";
    multi.DataValueField = "Description";

    multi.DataSource = ds.Tables[0];
    multi.DataBind();
}

protected void btnUpdate_onclick(object sender, EventArgs e)
{



    SqlConnection con = new SqlConnection(@"Data Source=ST0022;Initial 
Catalog=QuickMove_Globe;Persist Security Info=True;User ID=sa;Password=good");
    SqlCommand cmd= new SqlCommand("Update_Temp", con);

    cmd.CommandType = CommandType.StoredProcedure;
    //passing parameters
    cmd.Parameters.AddWithValue("@ID", Convert.ToInt32(multi.SelectedIndex));
    cmd.Parameters.AddWithValue("@Name",Convert.ToString(txtName.Value));
    cmd.Parameters.AddWithValue("@Description", Convert.ToString(txtComment.Value));
    cmd.Parameters.AddWithValue("@Content", Convert.ToString(editor.Value));
    cmd.Parameters.AddWithValue("@Active", (chkActive.Value).ToString());

    SqlDataAdapter da = new SqlDataAdapter();

    da.UpdateCommand=cmd;
    con.Open();






    cmd.ExecuteNonQuery();
    con.Close();

}
4

2 に答える 2

0

ドロップダウンからの正しい値がコード ビハインド メソッドに送られるかどうかを確認します。以下のようにボタン コマンドを変更できます。

<asp:Button ID="btnUpdate" runat="server" 
            onclick="btnUpdate_Click" Text="Save" />
于 2012-11-05T09:22:51.003 に答える
0

エラー処理を追加することを検討したいかもしれませんが、試してみてください。Stored Proc に RETURN は必要ありません。あなたがしなければならない他のことは、バインドを整理することです。ドロップダウンに間違った値をバインドしています。値は、表示したい ID とテキストである必要があります。次に、更新では Convert.ToInt32(multi.SelectedIndex) は SelectedIndex ではなく SelectedValue にする必要があります。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
       Bind();
    }

}



        protected void btnUpdate_onclick(object sender, EventArgs e)
    {



        SqlConnection con = new SqlConnection(@"Data Source=ST0022;Initial 
 Catalog=QuickMove_Globe;Persist Security Info=True;User ID=sa;Password=good");
        SqlCommand cmd = new SqlCommand("Update_Temp", con);

        cmd.CommandType = CommandType.StoredProcedure;
        //passing parameters
        cmd.Parameters.AddWithValue("@ID", Convert.ToInt32(multi.SelectedIndex));
        cmd.Parameters.AddWithValue("@Name", Convert.ToString(txtName.Value));
        cmd.Parameters.AddWithValue("@Description", Convert.ToString(txtComment.Value));
        cmd.Parameters.AddWithValue("@Content", Convert.ToString(editor.Value));
        cmd.Parameters.AddWithValue("@Active", (chkActive.Value).ToString());
        con.Open();

        cmd.ExecuteNonQuery();
        con.Close();

        Bind();
    }
于 2012-11-05T09:54:31.423 に答える