gpt4 book ai didi

c# - 更新面板问题

转载 作者:太空宇宙 更新时间:2023-11-03 16:48:08 25 4
gpt4 key购买 nike

我有一个下拉菜单,在表单加载时,它与数据库中的值绑定(bind)。我想使用下拉列表作为过滤器来使用更新面板更新数据网格,我设法开始工作。我在表单加载和选定索引上绑定(bind)数据网格,如图所示。我还想使用相同的下拉列表来使用 DataValueField 更新 formview,但由于某种原因它不起作用。原因可能是我使用了两个不同的更新面板和相同的 asynchpostbacktrigger?我应该在哪里将数据绑定(bind)到窗体 View ?非常感谢您的意见!提前致谢...

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">&nbsp;</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>

最佳答案

我尝试使用以下代码重新创建您的场景。 (而且有效)

protected void Page_Load(object sender, EventArgs e)
{

var foos = GetFoos();
Gridview1.DataSource = foos;
Gridview1.DataBind();

DetailsView1.DataSource = foos;
DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);
DetailsView1.DataBind();

DropDownList1.Items.AddRange(foos.Select(f => new ListItem(f.Name, f.Name)).ToArray());
DropDownList1.Items.Insert(0,new ListItem("-Select-"));


}

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
var selectedValue = DropDownList1.SelectedValue;

var foos = GetFoos().Where(f => f.Name == selectedValue);

Gridview1.DataSource = foos;
Gridview1.DataBind();

DetailsView1.DataSource = foos;
DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);
DetailsView1.DataBind();
}


static List<Foo> GetFoos()
{
var list = new List<Foo>();
for(int i=0;i<10;i++)
{
list.Add(new Foo {City = "City" + i, Name = "Name" + i});
}
return list;
}

class Foo
{
public string Name { get; set; }

public string City { get; set; }
}

这是标记

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
onselectedindexchanged="DropDownList1_SelectedIndexChanged">
</asp:DropDownList>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView runat="server" ID="Gridview1">
</asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="DropDownList1" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px">
</asp:DetailsView>

</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="DropDownList1" />
</Triggers>
</asp:UpdatePanel>

</asp:Content>

所以,这与您拥有的表单 View 有关。您可以切换到使用 DetailsView 吗?

关于c# - 更新面板问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5124603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com