2013-10-25 33 views
0
<asp:TemplateField HeaderText="Team Leader"> 
    <ItemTemplate> 
     <asp:Label ID="gvuser_teamleader" runat="server" Text='<%# Bind("TeamLeaderID") %>'></asp:Label> 
    </ItemTemplate> 
    <EditItemTemplate> 
     <asp:TextBox ID="txtuserteamleader" runat="server" Width="100px" Text='<%# Eval("TeamLeaderID") %>' CssClass="textboxstyle roundedcorner aligncenter gradientskyblue"></asp:TextBox> 
     <asp:ListBox ID="listboxuserteamleader" runat="server" Width="110px" AutoPostBack="true" OnSelectedIndexChanged="listboxuserteamleader_SelectedIndexChanged" CssClass="textboxstyle roundedcorner aligncenter gradientskyblue"></asp:ListBox> 
     <asp:DropDownExtender ID="DropDownExtender3" runat="server" TargetControlID="txtuserteamleader" DropDownControlID="listboxuserteamleader"></asp:DropDownExtender>          
    </EditItemTemplate> 
</asp:TemplateField> 

當我試圖觸發選擇列表框中指數變化的事件,並試圖到列表框中選中的值給文本框正在此錯誤綁定一個實例。此外,這兩個控件都位於gridview編輯項目模板字段中。對象引用未設置爲一個對象 - 正在此錯誤

我的代碼:

protected void listboxuserteamleader_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     foreach (GridViewRow gvr in gvusers.Rows) 
     { 
      TextBox txtuserteamleader = (TextBox)gvusers.FindControl("txtuserteamleader"); 
      ListBox listboxuserteamleader = (ListBox)gvusers.FindControl("listboxuserteamleader"); 
      txtuserteamleader.Text = listboxuserteamleader.SelectedValue.ToString(); 
     } 
    } 

回答

2

只是嘗試下面的代碼:

protected void listboxuserteamleader_SelectedIndexChanged(object sender, EventArgs e) 
{ 
foreach (GridViewRow gvr in gvusers.Rows) 
{ 
    TextBox txtuserteamleader = (TextBox)gvr.FindControl("txtuserteamleader"); 
    ListBox listboxuserteamleader = (ListBox)gvr.FindControl("listboxuserteamleader"); 
    if(txtuserteamleader !=null && listboxuserteamleader !=null) 
    { 
     txtuserteamleader.Text = listboxuserteamleader.SelectedValue.ToString(); 
    } 
} 
} 

其實什麼是你的問題:您創建的GridView的「gvusers」實例作爲GVR每一行...所以在你的foreach必須使用該實例不是「gvusers」 ......在這裏你會犯錯......

這是所有

+0

你願意解釋你的代碼嗎?不要只是轉儲代碼。 –

+0

哈哈這可能會防止錯誤,但它不會解決他的問題。 – Icemanind

+0

@icemanind請仔細閱讀答案....他的代碼中的實際問題。他發現從實際電網的行,你可以在他的代碼從這裏看到他使用的foreach 的foreach(GridViewRow GVR在gvusers.Rows) 他必須具有對「gvusers」的地方使用GRV。 我已經在我的答案中完成了..... –

0
try this: 

protected void listboxuserteamleader_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    foreach (GridViewRow gvr in gvusers.Rows) 
    { 
     TextBox txtuserteamleader = (TextBox)gvr.FindControl("txtuserteamleader"); 
     ListBox listboxuserteamleader = (ListBox)gvr.FindControl("listboxuserteamleader"); 
     txtuserteamleader.Text = listboxuserteamleader.SelectedValue.ToString(); 
    } 
} 

當你通過GridView的行迭代,你必須尋找該行內部的控制,讓你做出的錯誤是,你在尋找它整個GridView,每行都有這個控件。所以你需要連續搜索它。

+1

你願意解釋這給OP請。不要只是在這裏轉儲一些代碼。 –

+0

謝謝...它的工作perferctly – user2918543

+1

@ user2918543不要忘記接受答案幫助你...解決問題.. –

相關問題