2013-11-25 2 views
1

코드 뒤에있는 값을 asp:Parameter Name="HOME_TEAM_COACH_ID" Type="Int32"에 전달하고 싶기 때문에 Hidden Field을 바인딩하고 싶습니다.HiddenField를 gridview 내에서 바인딩

내 ASP :

<asp:FormView ID="FormView1" runat="server" OnItemUpdated="FormView1_ItemUpdating" > 
    <EditItemTemplate>   
     HOME_TEAM: 
     <asp:DropDownList ID="DropDownListHometeam" runat="server" 
      DataSourceID="SqlDataGetTeams" 
      DataTextField="NAME" DataValueField="ID" SelectedValue='<%# Bind("HOME_TEAM_ID") %>'> 
     </asp:DropDownList> 
     <asp:HiddenField runat="server" ID="testLabel" Value='<%# Bind("HOME_TEAM_COACH_ID") %>' /> 
    </EditItemTemplate> 

와 C# 뒤에이다 :

protected void FormView1_ItemUpdating(object sender, FormViewUpdatedEventArgs e) 
{ 
    if (FormView1.CurrentMode == FormViewMode.Edit) 
    { 
     DropDownList HomeTeamId = FormView1.FindControl("DropDownListHometeam") as DropDownList;    
     string team = string.Format("{0}", HomeTeamId.Text); 
     SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BasketballConnectionString1"].ToString()); 
     conn.Open(); 
     string queryHome = "SELECT dbo.COACH.ID, dbo.COACH.SURENAME FROM dbo.COACH INNER JOIN dbo.GAMES ON dbo.COACH.TEAM_ID = dbo.GAMES.HOME_TEAM_ID WHERE (dbo.GAMES.HOME_TEAM_ID =" + team + ")"; 
     SqlCommand cmd = new SqlCommand(queryHome, conn); 


     var Home_Coach_Id = cmd.ExecuteScalar().ToString(); 
     HiddenField HomeCoachIdLabel = FormView1.FindControl("testLabel") as HiddenField; 
     HomeCoachIdLabel.Value = Convert.ToString(Home_Coach_Id); 
     conn.Close(); 

나는 내가 asp:HiddenField ID="testLabel" Value='<%# Bind("HOME_TEAM_COACH_ID") %>'을 결합 할 수있는 Home_Coach_Id 값을 전달하려는 마지막 네 줄 도움말합니다.

업데이트를 클릭하면 데이터베이스의 값이 변경되지 않습니다. (디버그 할 때, 마지막 줄에서 정확한 HomeCoachIdLabel.Value을 제공합니다. 제안 사항이 있습니까?

답변

0

문제는이 방법의 사전 렌더링하지 onitemupdated 방법을 필요로한다는 것이다.

asp:FormView ID="FormView1" runat="server" OnPreRender="FormView1_OnPreRender" > 

또한 C#에서

내가 페이지로드에 넣을 때 그것은 또한 작동

protected void FormView1_OnPreRender(object sender, FormViewUpdatedEventArgs e) 

{

{}. 다음 단계는 삽입 이벤트를 만드는 것입니다 ....

0

HiddenFieldValue 속성은 마크 업에서 <%# Bind("HOME_TEAM_COACH_ID") %>에 의해 수행되므로 명시 적으로 설정할 필요가 없습니다.

나는 당신의 문제는 당신이 당신의 SELECT 문에서 데이터베이스에 쿼리에서 HOME_TEAM_COACH_ID을 반환하지 않는 것을 믿습니다 :

SELECT dbo.COACH.ID, dbo.COACH.SURENAME FROM dbo.COACH 
    INNER JOIN dbo.GAMES ON dbo.COACH.TEAM_ID = dbo.GAMES.HOME_TEAM_ID 
    WHERE (dbo.GAMES.HOME_TEAM_ID =" + team + ") 
+0

쿼리를 디버깅 할 때 int 값 (Id)을 반환합니다.이 값을 데이터베이스의 HOME_TEAM_COACH_ID 열에 전달해야합니다. – Apollon

+0

@Apollon - 따라서'SELECT'가 아니라'UPDATE'를하고'.ExecuteScalar()'대신'.ExecuteNonQuery()'를 사용해야합니다. –

+0

업데이트 할 때 asp sqldatasource에서 다음 쿼리를 실행합니다. UpdateCommand = "업데이트 게임 설정 AGONISTIKI = AGONISTIKI, HOME_TEAM_COACH_ID = @HOME_TEAM_COACH_ID WHERE (ID = @ID)" – Apollon