asp.net 根据选中的单选按钮显示数据库值

v440hwme  于 2023-02-14  发布在  .NET
关注(0)|答案(3)|浏览(168)

我应该根据选中的单选按钮在网格视图中显示数据库值。我目前使用的是单选按钮列表,应该根据单选按钮中选择的事务日期显示某些事务。例如,如果他们选择查看过去1个月的事务,我的网格视图应该只显示过去1个月的事务。我目前使用的是C#。
该日期是检索的基础上,系统日期和记录时,有交易作出。我可以知道如何链接无线电交易与数据库使用gridview?
首页:

第二页,此处的结果基于第一页的选择:

这是我为gridview编写的代码。

myConnection.ConnectionString = strConnectionString;
    SqlCommand cmd = new SqlCommand("SELECT thDate, thType, thAmountIn, thAmountOut from [Transaction] ORDER BY thDate, thType, thAmountIn, thAmountOut DESC", myConnection);
    myConnection.Open();
    SqlDataReader reader1 = cmd.ExecuteReader();
    GridView1.DataSource = reader1;
    GridView1.DataBind();
q8l4jmvw

q8l4jmvw1#

鉴于我看不到你的任何代码:
在RadioButtonList的OnSelectedIndexChanged事件中,您可以使用RadioButtonList1.SelectedItem.Value来选择哪个单选按钮
然后,您可以使用进行Sql查询以获取结果并将其绑定到Datagrid

示例:

//This is the method for event OnSelectedIndexChanged 
void Index_Changed(Object sender, EventArgs e)
{
  //RadioButtonList1.SelectedItem.Value use the value
   and to built as sql query string on your sqldatasource
  //Execute 
  //attach datasource to datagrid
  //Databind datagrid
}
rggaifut

rggaifut2#

我在评论中看到了这一点:
gridview和单选按钮在2个不同的页面上
这才是你应该在问题中包含的信息。但我可以处理这个问题。
首先,您希望在页面中处理您决定要移动到具有网格视图的页面的操作的任何部分使用如下代码:

var radioListMap = new Dictionary<string, string> 
{
   {"Current Month",                "0"},
   {"Last 1 Month & Current Month", "1"},
   {"Last 2 Month & Current Month", "2"}
};

string monthsBack;
if (!radioListMap.TryGetValue(radioListButton1.SelectedValue.Text, out monthsBack))
{
    monthsBack = "0";
}

Response.Redirect("MyOtherPage.aspx?MonthsBack=" + monthsBack);

这里你可以看到它是如何将一个基于单选按钮的值编码成一个URL查询参数的。注意我在这里使用了一个string而不是int,因为我们需要一个字符串来表示URL。如果你愿意,你也可以把它放在Session中,而不是URL中,在这种情况下int可能更好。
现在,在带有gridview的页面中,代码需要如下所示:

int monthsBack = int.TryParse(Request.QueryString["monthsBack"], out monthsBack) ? monthsBack : 0;

DateTime minDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddMonths(-monthsBack);

string SQL = @"
SELECT thDate, thType, thAmountIn, thAmountOut
FROM [Transaction] 
WHERE thDate >= @MinThDate 
ORDER BY thDate, thType, thAmountIn, thAmountOut DESC";

using var myConnection = new SqlConnection(strConnectionString);
using var cmd = new SqlCommand(SQL);
cmd.Parameters.Add("@MinThDate", SqlDbType.DateTime).Value = minDate;

myConnection.Open();
var reader1 = cmd.ExecuteReader();
GridView1.DataSource = reader1;
GridView1.DataBind();

您可以将此代码放在类似Page_Load的位置

aor9mmx1

aor9mmx13#

试试这样的方法:

DataTable table= new DataTable("table");
using (SqlConnection sqlConn = new SqlConnection(@"Your Connection Stuff;"))
{
if (radioButton1.Checked == true)
{
using (SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM yourdatabase WHERE date = " + date, sqlConn))
{
da.Fill(table);
}
dataGridView1.DataSource = table;
}

这会将表链接到数据网格:

dataGridView1.DataSource = table;
    • 基于您的代码的示例:**

您可以按如下方式获取当前日期:

DateTime date = DateTime.Now;

您的sql命令将变为:

SqlCommand cmd = new SqlCommand("SELECT thDate, thType, thAmountIn, thAmountOut from [Transaction] WHERE thDate = " + date + " ORDER BY thDate, thType, thAmountIn, thAmountOut DESC", myConnection);

你可以这样实现if语句:

if(radioButton1.Checked == true)
{
cmd += " WHERE thDate = " + date + ";
}

相关问题