我有一个下拉菜单,其中包含来自表单加载数据库的值。我想使用下拉列表作为过滤器来使用updatepanel来更新数据网格,我设法使用它。我在表单加载中绑定了数据网格,并在选定的索引上进行了修改,如图所示。我也想使用相同的下拉菜单来更新使用DataValueField的formview,由于某些原因,它无法正常工作。原因可能是我使用了两个不同的更新面板和相同的asynchpostbacktrigger?我应该在哪里绑定数据到formview?您的意见将不胜感激!在此先感谢...UpdatePanel Question
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(GetConnectionString());
conn.Open();
SqlCommand cmd3 = new SqlCommand("SELECT c.Email As CompanyEmail, c.Telephone AS Telephone, m.Email AS AdminEmail, m.FirstName + ' ' + m.LastName AS CompanyAdmin FROM Company c, Member m WHERE m.CompanyID = c.CompanyID AND m.CompanyID = '" + company_id + "' AND m.CompanyRole = 'Admin'", conn);
SqlCommand cmd = new SqlCommand("SELECT CompanyName, CompanyID FROM Company ORDER BY CompanyName", conn);
SqlCommand cmd2 = new SqlCommand("SELECT p.ProjectName AS ProjectName, p.ProjectID, p.CompanyID, p.Status AS Status FROM Project p, Company c WHERE p.CompanyID = c.CompanyID AND c.CompanyID = '" + company_id + "' ORDER BY ProjectName", conn);
cmd.CommandType = CommandType.Text;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
if (!Page.IsPostBack)
{
company_list.DataSource = ds;
company_list.DataTextField = "CompanyName";
company_list.DataValueField = "CompanyID";
company_list.DataBind();
company_list.Items.Insert(0, new System.Web.UI.WebControls.ListItem("-- Please Select Company --"));
}
//cmd2.Connection.Open();
cmd2.CommandType = CommandType.Text;
SqlDataAdapter sqlAdapter = new SqlDataAdapter(cmd2);
DataSet ds2 = new DataSet();
sqlAdapter.Fill(ds2);
Gridview1.DataSource = ds2;
Gridview1.DataBind();
FormView1.DataSource = cmd3.ExecuteReader();
FormView1.DataBind();
conn.Close();
//}
//cmd2.Connection.Close();
//cmd2.Connection.Dispose();
}
}
protected void company_list_SelectedIndexChanged(object sender, EventArgs e)
{
company_id = company_list.SelectedValue;
SqlConnection conn = new SqlConnection(GetConnectionString());
conn.Open();
SqlCommand cmd2 = new SqlCommand("SELECT p.ProjectName AS ProjectName, p.ProjectID, p.CompanyID, p.Status AS Status FROM Project p, Company c WHERE p.CompanyID = c.CompanyID AND c.CompanyID = '" + company_id + "' ORDER BY ProjectName", conn);
cmd2.CommandType = CommandType.Text;
SqlDataAdapter sqlAdapter = new SqlDataAdapter(cmd2);
DataSet ds2 = new DataSet();
sqlAdapter.Fill(ds2);
Gridview1.DataSource = ds2;
Gridview1.DataBind();
SqlCommand cmd = new SqlCommand("SELECT c.Email As CompanyEmail, c.Telephone AS Telephone, m.Email AS AdminEmail, m.FirstName + ' ' + m.LastName AS CompanyAdmin FROM Company c, Member m WHERE m.CompanyID = c.CompanyID AND m.CompanyID = '" + company_id + "' AND m.CompanyRole = 'Admin'", conn);
cmd.CommandType = CommandType.Text;
FormView1.DataSource = cmd.ExecuteReader();
FormView1.DataBind();
conn.Close();
}
ASP.NET:
<div style="float:left;">
<table>
<tr>
<td class="style1">Select Company:</td>
<td><asp:DropDownList ID="company_list" runat="server"
onselectedindexchanged="company_list_SelectedIndexChanged" width="185" AutoPostBack="true" /></td>
</tr>
<tr>
<td colspan="2" align="right"> </td>
</tr>
</table>
<asp:UpdatePanel ID="UpdateInfo" runat="server">
<ContentTemplate>
<asp:FormView ID="FormView1" runat="server">
<ItemTemplate>
<table>
<tr>
<td>Company Admin:</td>
<td><asp:TextBox Text='<%# Eval("Email") %>' CssClass="input input1" ID="co_admin" width="150" runat="server" ReadOnly="True" /></td>
</tr>
<tr>
<td>Admin Email:</td>
<td><asp:TextBox Text='<%# Eval("AdminEmail") %>' CssClass="input input1" ID="ad_email" width="150" runat="server" ReadOnly="True" /></td>
</tr>
<tr>
<td>Company Email:</td>
<td><asp:TextBox Text='<%# Eval("CompanyEmail") %>' CssClass="input input1" ID="co_email" width="150" runat="server" ReadOnly="True" /></td>
</tr>
<tr>
<td>Telephone:</td>
<td><asp:TextBox Text='<%# Eval("Telephone") %>' CssClass="input input1" ID="telephone" width="150" runat="server" ReadOnly="True" /></td>
</tr>
<tr>
<td></td>
<td><asp:Button CssClass="button_style" width="170" ID="export" Text="EXPORT TO EXCEL" runat="server" /></td>
</tr>
</table>
</ItemTemplate>
</asp:FormView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="company_list" />
</Triggers>
</asp:UpdatePanel>
</div>
<center>
<asp:UpdatePanel ID="UpdateGrid" runat="server">
<ContentTemplate>
<asp:gridview ID="Gridview1" runat="server" ShowFooter="True"
AutoGenerateColumns="False" GridLines="None">
<Columns>
<asp:TemplateField HeaderText="Project Name">
<ItemTemplate>
<asp:TextBox Text='<%# Eval("ProjectName") %>' CssClass="input input1" ID="project_name" width="150" runat="server" ReadOnly="True"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Status">
<ItemStyle Width="150" />
<ItemTemplate>
<center><asp:Image ImageUrl='<%# GetStatusImage(Eval("Status").ToString()) %>' ID="status" runat="server"/></center>
</ItemTemplate>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="company_list" />
</Triggers>
</asp:UpdatePanel>
你在哪里绑定到FormView?我看到Gridview1.DataBind(),但没有为FormView。 – 2011-02-26 02:42:01
我将更新代码... – user618616 2011-02-26 02:45:11