题目可能不太清楚/
意思说我数据库里有张表,然后我用2个foreach欠套,用来得到数据
(像这样:
foreach(DataTable objDT in objDs.Tables)
{
foreach(DataRow objDR in objDT.Rows)
{
this.txt_musicID.Text=objDR[0].ToString();
this.txt_musicName.Text=objDR[1].ToString();
this.txt_musicAuthor.Text=objDR[2].ToString();
this.txt_musicTime.Text=objDR[3].ToString();
}
}
可是这样的话他是自己移动的,我Form里只会显示最后一条信息,但是我想用个button来控制行数,
“前一条,后1条”的有选择的查看数据。有方法吗?
意思说我数据库里有张表,然后我用2个foreach欠套,用来得到数据
(像这样:
foreach(DataTable objDT in objDs.Tables)
{
foreach(DataRow objDR in objDT.Rows)
{
this.txt_musicID.Text=objDR[0].ToString();
this.txt_musicName.Text=objDR[1].ToString();
this.txt_musicAuthor.Text=objDR[2].ToString();
this.txt_musicTime.Text=objDR[3].ToString();
}
}
可是这样的话他是自己移动的,我Form里只会显示最后一条信息,但是我想用个button来控制行数,
“前一条,后1条”的有选择的查看数据。有方法吗?
public partial class Form1 : Form
{
DataSet objDS = new DataSet();
private int m_CurPos = 0;
private int m_MaxPos = 0;
private int[] m_TableRowCounts;
public Form1()
{
InitializeComponent();
m_TableRowCounts = new int[objDS.Tables.Count];
for (int i = 0; i < objDS.Tables.Count; i++)
{
DataTable tbl = objDS.Tables[i];
m_MaxPos += tbl.Rows.Count;
m_TableRowCounts[i] = tbl.Rows.Count;
}
}
private struct RowIdx
{
public int TableIndex;
public int RowIndex;
}
private int CurPosition
{
get { return this.m_CurPos; }
set
{
if (value >= 0 && value < m_MaxPos)
{
this.m_CurPos = value;
RowIdx idx = this.getRowIdex(value);
DataTable tbl=this.objDS.Tables[idx.TableIndex];
DataRow objDR = tbl.Rows[idx.RowIndex];
this.txt_musicID.Text = objDR[0].ToString();
this.txt_musicName.Text = objDR[1].ToString();
this.txt_musicAuthor.Text = objDR[2].ToString();
this.txt_musicTime.Text = objDR[3].ToString();
}
}
}
private RowIdx getRowIdex(int position)
{
RowIdx idx=new RowIdx();
int p1 = 0,p2=0;
for (int i = 0; i < this.m_TableRowCounts.Length ; i++)
{
p1+=this.m_TableRowCounts[i];
if (position < p1)
{
idx.TableIndex = i;
idx.RowIndex = position - p2;
return idx;
}
}
idx.RowIndex = -1;
idx.TableIndex = -1;
return idx;
} private void m_BtnNavPrev_Click(object sender, EventArgs e)
{
this.CurPosition--;
} private void m_BtnNavNext_Click(object sender, EventArgs e)
{
this.CurPosition++;
}
}
BindingSource.MovePrevious();
{
p1+=this.m_TableRowCounts[i];
if (position < p1)
{
idx.TableIndex = i;
idx.RowIndex = position - p2;
return idx;
}
p2+=this.m_TableRowCounts[i];//刚漏了这句 }
之后
foreach(DataTable objDT in objDs.Tables)
{
DataRow objDR =objDT.Rows[i];//就是这行,只要直接指定行数就可以得到了;
this.txt_musicID.Text=objDR[0].ToString();
this.txt_musicName.Text=objDR[1].ToString();
this.txt_musicAuthor.Text=objDR[2].ToString();
this.txt_musicTime.Text=objDR[3].ToString();
}
。就这样就全都搞定了。^_^