2012-02-28 7 views
1

나는 다음과 같은 내 데이터베이스에서 두 개의 테이블이 있습니다DropDownList를 사용하여 GridView에서 하나의 값 상태를 업데이트하는 방법은 무엇입니까?

제안 테이블 : ID, 제목, 설명, StatusID ... 등

SuggestionsStatus 테이블 : ID, 상태

내가 보여줄의 GridView를 사용하고 있습니다 제안 및 마지막 열에는 각 제안에 대한 상태를 선택하기위한 DropDownList를 두었습니다. 이제 DropDownList에서 상태를 선택하여 제출 된 제안 중 하나의 상태를 업데이트하려고 시도했지만 값이 선택되었지만 업데이트되었지만 모든 제안에 대해 이유를 모르겠습니다.

내 ASP. NET 코드 :

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
         AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="ID" 
         width="950px" CssClass="mGrid" 
         AlternatingRowStyle-CssClass="alt" 
         RowStyle-HorizontalAlign="Center" 
         DataSourceID="SqlDataSource1" 
         OnRowDataBound="GridView1_RowDataBound" > 
      <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
      <HeaderStyle Font-Bold = "true" ForeColor="Black" Height="20px"/> 
      <Columns> 
       <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
        ReadOnly="True" SortExpression="ID" /> 
       <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> 
       <asp:BoundField DataField="Description" HeaderText="Description" 
        SortExpression="Description" /> 
       <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> 
       <asp:BoundField DataField="Username" HeaderText="Username" 
        SortExpression="Username" /> 
       <asp:BoundField DataField="DivisionShortcut" HeaderText="Division" 
        SortExpression="DivisionShortcut" /> 
       <asp:TemplateField HeaderText="Status"> 
        <ItemTemplate> 
         <asp:DropDownList ID="DropDownList" runat="server" DataSourceID="SqlDataSource2" 
              Font-Bold="True" ForeColor="#006666" AppendDataBoundItems="false" 
              DataTextField="Status" DataValueField="ID" AutoPostBack="true" 
              OnDataBound="DropDownList_DataBound"> 
         </asp:DropDownList> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
     </asp:GridView> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
      ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
      SelectCommand="SELECT  dbo.SafetySuggestionsLog.ID, dbo.SafetySuggestionsLog.Title, dbo.SafetySuggestionsLog.Description, dbo.employee.Name, dbo.SafetySuggestionsLog.Username, 
         dbo.Divisions.DivisionShortcut 
FROM   dbo.employee INNER JOIN 
         dbo.SafetySuggestionsLog ON dbo.employee.Username = dbo.SafetySuggestionsLog.Username INNER JOIN 
         dbo.Divisions ON dbo.employee.DivisionCode = dbo.Divisions.SapCode" 
         FilterExpression="[DivisionShortcut] like '{0}%'"> 

         <FilterParameters> 
         <asp:ControlParameter ControlID="ddlDivision" Name="DivisionShortcut" 
               PropertyName="SelectedValue" Type="String" /> 
        </FilterParameters> 
     </asp:SqlDataSource> 

     <%--For the DropDownList--%> 
     <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
     ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
     SelectCommand="SELECT * FROM [SafetySuggestionsStatus]"></asp:SqlDataSource> 

내 코드 숨김 :

protected void DropDownList_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     DropDownList ddl = (DropDownList)sender; 
     int suggestionStatus = int.Parse(ddl.SelectedValue); 

     //For inserting the status in the database 
     string connString = "Data Source=localhost\\sqlexpress;Initial Catalog=psspdbTest;Integrated Security=True"; 
     string updateCommand = "UPDATE SafetySuggestionsLog SET [StatusID] = @StatusID WHERE [ID] = @ID"; 
     using (SqlConnection conn = new SqlConnection(connString)) 
     { 
      conn.Open(); 
      using (SqlCommand cmd = new SqlCommand(updateCommand, conn)) 
      { 
       cmd.Parameters.Clear(); 
       cmd.Parameters.AddWithValue("@StatusID", suggestionStatus); 
       cmd.ExecuteNonQuery(); 
      } 
      conn.Close(); 
     } 
    } 

** 편집 : **

나는 위의 그림 만 t으로 DropDownList_SelectedIndexChanged() 수정 그 문제는 지금 : 내가 제안 중 하나의 상태를 업데이트하려고

은, 모든 제안의 상태가 업데이트되고 나는이 문제를 해결할 수있는 방법을 왜

을 모르는 데이터베이스 (GridView)에 제출 된 제안 중 하나의 상태를 업데이트 할 수 있습니까? **

답변

1

@ID 매개 변수가 없습니다.

+0

도움을 주셔서 감사합니다.하지만 다음과 같은 오류가 발생하며 이유를 알 수 없습니다. 암시 적으로 '개체'유형을 '문자열'로 변환 할 수 없습니다. 명시 적 변환이 존재합니다 (캐스트가 누락 되었습니까)? –

+0

내 업데이트 –

+1

을 참조하십시오. 도와 주셔서 정말 고맙습니다. –

관련 문제