インターネットからコードを取得しました.TblQuestions.createdという名前のデータベーステーブルで構成され、テキストボックス名がTxtRequiredRecords&button1のDefault.aspxページが作成されました。値2をテキストボックスに入力してボタン1をクリックすると、2つの質問がランダムに生成されます.5を入力すると、テーブルから5つの質問がランダムに生成されます.オプションを入力するために別のテキストボックス2を追加したい.私の目的は、テキストボックス1に2を入力し、C textbox2. では、オプション C の質問のみからランダムに 2 つの質問が生成されます。
結果を得るためにコードのどこを変更しましたか?
私のコード Default.aspx :-
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">`
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TxtRequiredRecords" runat="server"></asp:TextBox>
<asp:Button ID="BtnDisplayRecords" runat="server" OnClick="Button1_Click" Text="Display Records" />
<br />
<br />
<asp:GridView ID="GvResults" runat="server">
</asp:GridView>
</div>
</form>
</body>
</html>
C# コード:-
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Collections;
public partial class _Default : System.Web.UI.Page
{
static int TotalRecords;
SqlConnection con;
SqlDataAdapter sqlda;
DataTable dt;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string query = "SELECT COUNT(*) AS TotalRecords FROM TblQuestions";
DataTable dt = GetRecords(query);
TotalRecords = Convert.ToInt32(dt.Rows[0]["TotalRecords"]);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
bool IsInt;
int RequiredRecords;
string CSVData, query;
IsInt = Int32.TryParse(TxtRequiredRecords.Text, out RequiredRecords);
if (IsInt)
{
if (TotalRecords >= RequiredRecords)
{
CSVData = GetRandomNumbersCSV(TotalRecords, RequiredRecords);
query = "SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY QuestionID) AS RowID,* FROM TblQuestions)TempTable WHERE RowID IN(" + CSVData + ")";
dt = GetRecords(query);
GvResults.DataSource = dt;
GvResults.DataBind();
}
else
{
Response.Write("Required Records must be greater than Requried Records.");
}
}
else
{
Response.Write("Invalid Number");
}
}
public ArrayList RandomNumbers(int max)
{
ArrayList lstNumbers = new ArrayList();
Random rndNumber = new Random();
int number = rndNumber.Next(1, max + 1);
lstNumbers.Add(number);
int count = 0;
do
{
number = rndNumber.Next(1, max + 1);
if (!lstNumbers.Contains(number))
{
lstNumbers.Add(number);
}
count++;
}
while (count <= 10 * max);
return lstNumbers;
}
public string GetRandomNumbersCSV(int max, int req)
{
string CSV = "";
ArrayList lstNumbers = RandomNumbers(max);
for (int i = 0; i < req; i++)
CSV += lstNumbers[i].ToString() + ",";
CSV = CSV.Remove(CSV.Length - 1);
return CSV;
}
public DataTable GetRecords(string Query)
{
con = GetConnection();
con.Open();
sqlda = new SqlDataAdapter(Query, con);
dt = new DataTable();
sqlda.Fill(dt);
con.Close();
return dt;
}
public SqlConnection GetConnection()
{
con = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlcon"].ToString());
return con;
}
}