2013-11-25 2 views
1

Я хочу связать Hidden Field, потому что я хочу передать значение из кода позади в asp:Parameter Name="HOME_TEAM_COACH_ID" Type="Int32".Bind a HiddenField в gridview

Мой жерех:

<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(); 

Я хочу, чтобы помочь с последними четырех строк, где я хочу, чтобы передать значение Home_Coach_Id связывать asp:HiddenField ID="testLabel" Value='<%# Bind("HOME_TEAM_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") %>.

Я считаю, что ваша проблема в том, что вы не возвращенная HOME_TEAM_COACH_ID из вашего запроса к базе данных в вашем SELECT заявления:

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 - вам нужно сделать 'UPDATE', а не' SELECT' и использовать '.ExecuteNonQuery()' вместо '.ExecuteScalar()'. –

+0

Когда я обновляю, он выполняет из asp sqldatasource этот запрос: UpdateCommand = "UPDATE GAMES SET AGONISTIKI = AGONISTIKI, HOME_TEAM_COACH_ID = @HOME_TEAM_COACH_ID WHERE (ID = @ID)" – Apollon