我正在尝试使用C#中的WinForms构建钓鱼锦标赛的排行榜。我的想法是使用将加载到数据表中的SQL数据库中的数据填充文本框。锦标赛有几个分赛段将会展出。
我的WinForm有七行文本框,因此我需要显示数据表的前七行40秒,然后显示接下来的七行,依此类推,直到表为空。然后它将运行一个查询来重新填充下一个锦标赛的数据表并重复该过程。
计时器有效,因为表单会在填充之前延迟正确的时间长度,但我仍然坚持如何使用接下来的七行刷新它。
非常感谢任何帮助我们朝着正确方向前进的方法。
这是我到目前为止的代码:
private void Timer1_Tick(object sender, EventArgs e)
{
TitleTxtBx.Text = "Redfish General Weight";
SqlConnection KF = new SqlConnection("user id=--------;" +
"password=--------;server=--------;" +
"Trusted_Connection=no;" +
"database=-------;" +
"connection timeout=120");
SqlDataAdapter sda = new SqlDataAdapter(@"SELECT ROW_NUMBER() OVER(ORDER BY RFFishWeight DESC) AS POS, Number, RFFName, RFLAName, RFFishWeight
FROM RedFish
WHERE Kayak LIKE 'no'
AND RFFishWeight > 0
ORDER BY RFFishWeight DESC,
TimeStamp DESC", KF);
DataTable LBdt = new DataTable();
sda.Fill(LBdt);
RnkTxtBx1.Text = LBdt.Rows[0][0].ToString();
BTNbrTxtBx1.Text = LBdt.Rows[0][1].ToString();
FNameTxtBx1.Text = LBdt.Rows[0][2].ToString();
LNameTxtBx1.Text = LBdt.Rows[0][3].ToString();
WhtTxtBx1.Text = LBdt.Rows[0][4].ToString();
RnkTxtBx2.Text = LBdt.Rows[1][0].ToString();
BTNbrTxtBx2.Text = LBdt.Rows[1][1].ToString();
FNameTxtBx2.Text = LBdt.Rows[1][2].ToString();
LNameTxtBx2.Text = LBdt.Rows[1][3].ToString();
WhtTxtBx2.Text = LBdt.Rows[1][4].ToString();
RnkTxtBx3.Text = LBdt.Rows[2][0].ToString();
BTNbrTxtBx3.Text = LBdt.Rows[2][1].ToString();
FNameTxtBx3.Text = LBdt.Rows[2][2].ToString();
LNameTxtBx3.Text = LBdt.Rows[2][3].ToString();
WhtTxtBx3.Text = LBdt.Rows[2][4].ToString();
RnkTxtBx4.Text = LBdt.Rows[3][0].ToString();
BTNbrTxtBx4.Text = LBdt.Rows[3][1].ToString();
FNameTxtBx4.Text = LBdt.Rows[3][2].ToString();
LNameTxtBx4.Text = LBdt.Rows[3][3].ToString();
WhtTxtBx4.Text = LBdt.Rows[3][4].ToString();
RnkTxtBx5.Text = LBdt.Rows[4][0].ToString();
BTNbrTxtBx5.Text = LBdt.Rows[4][1].ToString();
FNameTxtBx5.Text = LBdt.Rows[4][2].ToString();
LNameTxtBx5.Text = LBdt.Rows[4][3].ToString();
WhtTxtBx5.Text = LBdt.Rows[4][4].ToString();
RnkTxtBx6.Text = LBdt.Rows[5][0].ToString();
BTNbrTxtBx6.Text = LBdt.Rows[5][1].ToString();
FNameTxtBx6.Text = LBdt.Rows[5][2].ToString();
LNameTxtBx6.Text = LBdt.Rows[5][3].ToString();
WhtTxtBx6.Text = LBdt.Rows[5][4].ToString();
RnkTxtBx7.Text = LBdt.Rows[6][0].ToString();
BTNbrTxtBx7.Text = LBdt.Rows[6][1].ToString();
FNameTxtBx7.Text = LBdt.Rows[6][2].ToString();
LNameTxtBx7.Text = LBdt.Rows[6][3].ToString();
WhtTxtBx7.Text = LBdt.Rows[6][4].ToString();
{
答案 0 :(得分:0)
所以你需要跳过@n次7行。你可以这样做:
;with numberedtable as (
SELECT ROW_NUMBER() OVER(ORDER BY RFFishWeight DESC) AS POS, Number, RFFName, RFLAName, RFFishWeight
FROM RedFish
WHERE Kayak LIKE 'no'
AND RFFishWeight > 0
ORDER BY RFFishWeight DESC,
TimeStamp DESC
)
select top 7 POS, Number, RFFName, RFLAName, RFFishWeight
from numberedtable
where pos > 7 * @n
order by pos
如果您之前没有使用过参数:
sda.SelectCommand.Parameters.AddWithValue("@n", [pagenumber]);