2011-02-24 79 views
2

好的,所以我需要一些帮助。我在我的数据库中有一个表格AgileFactors,它具有以下字段:AgileFactorID,Name和Description。我使用checkboxlist将Name作为DataTextField,将AgileFactorID作为DataValueField进行绑定。我想要做的是使用db中的Description域作为悬停时的工具提示,以显示每个复选框旁边显示的信息图标。请看下面我的代码。此刻,我在span标签内传递了一个很长的字符串,这是毫无意义的。任何人都可以帮助我确保工具提示从数据库中检索?提前谢谢了!复选框工具提示数据库

"SELECT Name, AgileFactorID, Description FROM AgileFactors" 

agile_factors.DataSource = ds2; 
agile_factors.DataTextField = "Name"; 
agile_factors.DataValueField = "AgileFactorID"; 
agile_factors.DataBind(); 


protected void agilefactors_DataBound(object sender, EventArgs e) 
{ 

    var checkBox = sender as CheckBoxList; 
    if (checkBox != null) 
    { 

     foreach (ListItem listItem in checkBox.Items) 
     { 

      listItem.Text = string.Format("{0} <span class='link'><a href='javascript: void(0)'><font face='verdana,arial,helvetica' size='2'><img src='{1}' Height='15' Width='15' /></font><span><b>Project Duration:</b><br/>Ideally, the project should be close to 6 months: much shorter means less iterations, and much longer tends towards long term planning.</span></a></span>", listItem.Text, GetImageFor(listItem.Text)); 

     } 
    } 
} 

private string GetImageFor(string text) 
{ 

    // return image url for check box based on text. 
    switch (text) 
    { 
     case "Project Duration": return "images/iicon.gif"; 
     case "Customer Involvement": return "images/iicon.gif"; 
     case "Acceptance of Change": return "images/iicon.gif"; 
     case "Team Size": return "images/iicon.gif"; 
     case "Skill of Team": return "images/iicon.gif"; 
     case "Organisational and Reporting Structure": return "images/iicon.gif"; 
     case "Process": return "images/iicon.gif"; 
     case "Documentation Requirements": return "images/iicon.gif"; 
     case "Layout of Workspace": return "images/iicon.gif"; 
     case "Empowered Team": return "images/iicon.gif"; 
     default: return null; 
    } 
} 

回答

1

就像你有一个GetImageFor函数一样,创建另一个函数来“GetTooltip”。 像其他字段一样提取工具提示并将其分配给工具提示属性。

编辑

你真的有所有的代码,所有你所要做的就是去做。我不会为你做数据库端,因为你自己可以做到这一点,你已经证明了这一点。

但这里要补充的工具提示你去:

int i = 0; 

      foreach(ListItem l in this.CheckBoxList1.Items) 
      { 
       i++; 
       l.Attributes["title"] = "Tooltip " + i.ToString(); 
      } 

下面是结果的屏幕截图。 enter image description here

+0

你能告诉我该怎么做吗?我非常感谢它...... – user618616 2011-02-24 19:37:35

+0

如果真的需要你的帮助,请点击这里。我认为使用这种方法是可行的。我真的不知道如何从数据库中读取描述,但是......请告诉我吗? – user618616 2011-02-24 20:55:31

0

格式,因为你需要,但在这里你去 -

protected void agilefactors_DataBound(object sender, EventArgs e) 
{ 
    var checkBox = sender as CheckBoxList; 
    if (checkBox != null) 
    { 
     foreach (ListItem listItem in checkBox.Items) 
     {     
      listItem.Text = string.Format("{0} <span class='link'><a href='javascript: void(0)'><font face='verdana,arial,helvetica' size='2'><img src='{1}' Height='15' Width='15' alt='{2}' /></font><span><b>Project Duration:</b><br/>Ideally, the project should be close to 6 months: much shorter means less iterations, and much longer tends towards long term planning.</span></a></span>", listItem.Text, GetImageFor(listItem.Text), GetToolTip(listItem.Value)); 
     } 
    } 
} 

private string GetToolTip(string value) 
{ 
    var x = (from y in ds2.AsEnumerable() 
      where y["AgileFactorID"] == value 
      select y["description"]).FirstOrDefault(); 

    return x.ToString(); 
} 

你将需要修复了,你有什么,但这应该帮助的一种方式。

+0

仅仅使用listitem类的属性并指定title属性不是更简单吗? – JonH 2011-02-24 20:10:12

+0

当然 - 但我试图坚持他所拥有的东西,而不是重写,以防他需要链接中的文本等等。 – TheGeekYouNeed 2011-02-24 20:26:04