2013-11-25 39 views
1

我想綁定一個Hidden Field,因爲我想將代碼後面的值傳遞給asp:Parameter Name="HOME_TEAM_COACH_ID" Type="Int32"綁定gridview中的HiddenField

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

我想最後四行,我想通過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") %>完成的。

我相信你的問題是,你是不是在你的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

@Aolloll - 所以你需要做一個'UPDATE'而不是'SELECT'並使用'.ExecuteNonQuery()'而不是'.ExecuteScalar()'。 –

+0

當我更新它執行從ASP sqldatasource這個查詢:UpdateCommand =「更新遊戲集AGONISTIKI = AGONISTIKI,HOME_TEAM_COACH_ID = @HOME_TEAM_COACH_ID WHERE(ID = @ ID)」 – Apollon