我正在尝试弄清楚如何从下拉列表中访问和存储选择,以便在mainSQL类的SELECT命令中使用。
这里有具体细节。
DropDownList(在名为Page.aspx的页面上):
<asp:DropDownList
ID="selectInfo1"
runat="server"
AutoPostBack="True"
DataTextField="Info1"
DataValueField="Info1Key"
DataSourceID="SqlDB" >
</asp:DropDownList>
我正在尝试访问DDL的函数(在单独的类文件中):
public List<ListInfo> getList()
{
List<ListInfo> sList = new List<ListInfo>();
ListInfo objList = null;
//This is where I need to declare a variable called Info1Key and set it to the value of the ddl!
string queryString = "SELECT [UniqueID], [Date], [Info1], [Info2], [Info3] FROM [ReportedSales] WHERE ([Info1] = ' " + Info1Key + "') ORDER BY [Date]";
using (SqlConnection connection = new SqlConnection(sqlConString))
{
using (SqlCommand command = new SqlCommand(queryString, connection))
{
command.Connection.Open();
using (SqlDataReader dataReader = command.ExecuteReader())
{
while (dataReader.Read())
{
objList = new ListInfo();
objList.ID = Convert.ToInt16(dataReader["UniqueID"]);
objList.Date = Convert.ToDateTime(dataReader["Date"]);
objList.Info1 = (dataReader["Info1"] as int?) ?? 0;
objList.Info2 = (dataReader["Info2"] as int?) ?? 0;
objList.Info3 = (dataReader["Info3"] as int?) ?? 0;
sList.Add(objList);
}
}
}
}
return sList;
}
这是调用getList方法的唯一函数(我很确定) -
private void FillListActivity()
{
List<ListInfo> objList = new List<ListInfo>();
objList = new mainSQL().getList();
ReportingGV.DataSource = objList;
ReportingGV.DataBind();
}
新问题 - 当我更改DDL时,GV不再发生变化。
我可以解决的一种方法是更改Page.opx.cs中的Page_Load,如下所示:
最初:
protected void Page_Load(object sender, EventArgs e)
{
if(!isPostBack)
{
FillSalesActivity();
}
}
工作,但我有问题吗?:
protected void Page_Load(object sender, EventArgs e)
{
FillSalesActivity();
}
答案 0 :(得分:4)
您不希望外部类知道或关心UI元素(例如下拉列表)。它们应尽可能与UI无关。
相反,在这种情况下你想要做的是将值传递给函数。所以你要将函数签名改为:
public List<ListInfo> getList(string Info1Key)
{
// The code is the same, just use the Info1Key parameter that's been passed to the function.
}
然后你会调用这样的函数:
private void FillSalesActivity()
{
List<SalesInfo> objSalesList = new List<SalesInfo>();
objSalesList = new mainSQL().getSalesList(selectInfo1.SelectedValue);
SalesReportingGV.DataSource = objSalesList;
SalesReportingGV.DataBind();
}
有几点需要注意:
SelectedValue
。