今天用了一下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外,谢谢老赵提醒!