所以我有这张表的名称和我用于族谱网站的所有祖先的出生/死亡日期。关键是ID,所有孩子的ParentID项目将被设置为与父母的ID相同。使用sql命令来查找记录 - sql中的树结构
ID - int (key)
FirstName - string
Lastname - string
Born - int
Died - int
ParentID - int
hasChildren - bool
我想表明它在某种类型的树结构(这是另一个问题后) - 现在我只是显示在GridView他们。我在每行的分支开始处都有一个按钮。当您点击某人记录上的分支时,它会调用select函数来检索所选记录的ID,以便我可以使用SELECT命令来搜索所有记录,并使用与所选记录的ID相匹配的ParentID。这样做,我将重新填充所选记录的所有子项(父项)的网格。因为我不想显示在网格中的ID和PARENTID,我可以使用无法恢复:
GridViewRow row = GridView1.Rows[GridView1.SelectedIndex];
什么,我脑子里想的是一样的东西:
SqlDataSource ds = (SqlDataSource)GridView1.DataSourceObject;
string selectstring = "SELECT [ID],[FirstName],[MiddleName],[LastName],[BirthDate],[DeathDate],[ParentID],[hasChild] FROM [test2].[dbo].[Geneology] where ParentID = " + x;
SqlDataSource2.SelectCommand = selectstring;
其中x是所选记录ID的字符串。我似乎无法弄清楚如何检索选定记录的ID,而不显示在gridview中。我在创建数据源时选择了所有列,但隐藏了ID和ParentID。现在它们不包含在gridview的行中。有关如何去做这件事的任何想法?我希望这解释得很好。
OK - 我修好了。我必须将DataKey设置为ID,以便GridView.SelectedValue返回ID。它的工作现在。我只需要弄清楚如何返回一个级别,而不用重新填充所有记录的网格。
做一个谷歌搜索乔Celko,你会想出一些伟大的文章和[例子](http://www.ibase.ru/devinfo/DBMSTrees/sqltrees.html) –