0

GridView1 内に Dropdownlist を配置し、dropdownlist の値は 0 と 1 です。必要なのは、dropDownlist から選択した値に応じて、列 [Status] を更新し、SQL データベースの値を更新することです。

protected void SQL_Update(object sender, GridViewUpdateEventArgs e){

SqlConnection conn = new SqlConnection();
conn.ConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=Korisnik;Integrated Security=True";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "UPDATE RegistracijaKorisnik SET Status = " + ((DropDownList)GridView1.Rows[e.RowIndex].FindControl("DropDownList2")).SelectedValue; ;
cmd.Connection = conn;

conn.Open();
cmd.ExecuteNonQuery();

conn.Close();}
4

2 に答える 2

0

DropDownList があり、それをどちらの方法でもバインドするとします。

<asp:GridView ID="Grid" runat="server" OnRowUpdating="SQL_Update">
  <asp:TemplateField> 
    <EditItemTemplate>
      <asp:Button ID="Btn" runat="server" CommandName="Update" Text="Update" />
    </EditItemTemplate>
  </asp:TemplateField> 
  <asp:TemplateField>
    <EditItemTemplate>
      <asp:DropDownList ID="ddl" runat="server" /> 
    </EditItemTemplate> 
  </asp:TemplateField> 
</asp:GridView>

コード ビハインドでは、具体的には Updating イベントを使用する必要があります。GridViewUpdateEventArgs e

protected void SQL_Update(object sender, GridViewUpdateEventArgs e)
{
   /*
     You'll have to find the control in the GridView, using FindControl, and cast it to a DropDownList  
     Using ddl.SelectedValue isn't going to work
   */
   string sql = "Update table set Status = " + ((DropDownList)Grid.Rows[e.RowIndex].FindControl("ddl")).SelectedValue 
   //Other SQL logic here

   //Commit the database changes, using whichever SQL driver you have.
}
于 2012-09-11T13:00:00.867 に答える
0

私があなただったら、あなたが提供した情報から、解決策は

<asp:TemplateField />

に DropDownList がある列

<EditTemplate>

このコラムの。次に、GridView にある種のボタンが必要です。

CommandName="Edit"

これにより、編集および設定されている行のインデックスを識別するために使用する GridView の編集イベントが発生します

GridView1.EditIndex = e.NewEditIndex

その行には、値が 0 と 1 の DropDownList があります。また、EditTemplate に、変更を保存するボタンが必要です。

CommandName="Update"

次に、グリッドの RowUpdating イベントを処理して、RowUpdating が発生したときに DropdownList から新しい値を見つけ、データベース内の関連する行をこの新しいデータで更新してから、GridView の EditIndex プロパティを '-1' に戻してその行の編集を停止します。次に、GridView 内のデータを再バインドして、変更を表示します。

小さな例は次のようになります。

<asp:TemplateField HeaderText="Edit">
    <ItemTemplate>
        <asp:Button ID="EditImageButton" runat="server" Text="Edit" CommandName="Edit"' />
    </ItemTemplate>
    <EditItemTemplate>
        <asp:Button ID="UpdateButton" runat="server" ToolTip="Save" CommandName="Update"/>
    </EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
    <ItemTemplate>
        <% #Eval("Status")%>
    </ItemTemplate>
    <EditTemplate>
        <asp:DropdownList ID="List" runat="server" />
    <EdiTemplate>
</asp:TemplateField>


protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
        GridView1.EditIndex = e.NewEditIndex;
        GridView1.DataSource = Session["domainData"];
        GridView1.DataBind();
}

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    int index = GridView1.EditIndex;
    int key = Convert.ToInt32(GridView.DataKeys[index].Value);
    GridViewRow row = GridView1.Rows[index];
    DropdownList = row.FindControl("List") as DropDownList;

    // Save changes to database

    // GridView1.EditIndex = -1;
    // Rebind grid data
}
于 2012-09-11T12:49:02.907 に答える