GridView放在UpdatePanle里面模板列取值!

   今天用了一下UpdatePanle,遇到一个问题,先记录下来。GridView放在UpdatePanle里面模板列取不到值!
 <asp:ScriptManager ID="ScriptManager1" runat="server">
    
</asp:ScriptManager>
    
<table align=center width=800>
        
<tr><td>
            
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" Width="154px" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
               
<asp:ListItem Value="0"></asp:ListItem>
                
<asp:ListItem Value="1">ID大于15</asp:ListItem>
                
<asp:ListItem Value="2">id小于15</asp:ListItem>
            
</asp:DropDownList></td>
            
<td>id值为<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td>
            
</tr>
            
</table>
    
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
        
<ContentTemplate>
        
<table align=center width=800>
        
        
<tr><td>
            
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID"
                DataSourceID
="SqlDataSource1" Width="800" CssClass="GridViewCss"  OnRowCommand="GridView1_RowCommand">
                
<Columns>
                    
<asp:BoundField DataField="UserCode" HeaderText="UserCode" SortExpression="UserCode" />
                    
<asp:BoundField DataField="UserName" HeaderText="UserName" SortExpression="UserName" />
                    
<asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True"
                        SortExpression
="ID" />
                    
<asp:BoundField DataField="Birthday" HeaderText="Birthday" SortExpression="Birthday" />
                    
<asp:BoundField DataField="Sex" HeaderText="Sex" SortExpression="Sex" />
                    
<asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
                    
<asp:BoundField DataField="Address" HeaderText="Address" SortExpression="Address" />
                    
<asp:TemplateField HeaderText="ID" >
                    
<ItemTemplate >        
                       
                    
<asp:Label ID="lblid" runat=server Text='<%# Eval("ID") %>'></asp:Label></ItemTemplate>
                    
</asp:TemplateField>
                    
<asp:TemplateField HeaderText="操作">
                              
                                
<itemtemplate>
<asp:LinkButton id="lbtndll" runat="server"  CommandName="lbtndll"  CommandArgument ="<%# GridView1.Rows.Count %>">取值</asp:LinkButton> 
</itemtemplate>
                            
</asp:TemplateField>
                
</Columns>
                
<HeaderStyle CssClass="GridViewHeader" />
            
</asp:GridView>
            
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:IwoakOAConnectionString %>"
                SelectCommand
="SELECT [UserCode], [UserName], [ID], [Birthday], [Sex], [Email], [Address] FROM [Iw_User]">
            
</asp:SqlDataSource>
            
</td></tr>
        
</table>
        
</ContentTemplate>
        
<Triggers>
            
<asp:AsyncPostBackTrigger ControlID="DropDownList1" EventName="SelectedIndexChanged" />
          
        
</Triggers>
    
</asp:UpdatePanel>

后台代码:
 protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    
{
        
string sql = "";
        
switch (DropDownList1.SelectedValue)
        
{
            
case "0":
                sql 
= "SELECT [UserCode], [UserName], [ID], [Birthday], [Sex], [Email], [Address] FROM [Iw_User] ";
                
break ;
            
case "1":
                sql 
= "SELECT [UserCode], [UserName], [ID], [Birthday], [Sex], [Email], [Address] FROM [Iw_User] where id>15";
                
break;
            
case "2":
                sql 
= "SELECT [UserCode], [UserName], [ID], [Birthday], [Sex], [Email], [Address] FROM [Iw_User] where id<15";
                
break;
        }
      

        SqlDataSource1.SelectCommand 
=sql;
        GridView1.DataSourceID 
= "SqlDataSource1";
        GridView1.DataBind();
    }

   
    
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    
{
        
if (e.CommandName == "lbtndll")
        
{
            
int index = Convert.ToInt32(e.CommandArgument);
            Label lblid 
= (Label)this.GridView1.Rows[index].FindControl("lblid");
            TextBox1.Text 
= lblid.Text;
            
//ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "key", "alert('" + lblid .Text+ "')", true);
        }


      
    }

将GridView移出UpdatePanle外是完全没有问题的。
原来取不到值是因为我把TextBox放在了Updatepanle外,谢谢老赵提醒!
原文地址:https://www.cnblogs.com/anson/p/549878.html