2014-07-03 62 views
0

我有一个gridview,变得相当长,可能有些隐藏的信息。在点击时显示gridview数据

这里是我的asp:

<asp:GridView ID="gvLogBody" runat="server" CssClass="Grid" AllowPaging="true" AllowSorting="true" PageSize="10" AutoGenerateColumns="true"> 
</asp:GridView> 

这里是我的代码背后:

DataSet ds = new DataSet(); 
ds.Tables.Add("LogBody"); 
ds.Tables["LogBody"].Columns.Add("timeStamp"); 
ds.Tables["LogBody"].Columns.Add("name"); 
ds.Tables["LogBody"].Columns.Add("message"); 
foreach (LogObject l in logLines) 
{ 
    ds.Tables["LogBody"].Rows.Add(l.TimeStamp, l.Name, l.Message); 
} 
gvLogBody.DataSource = ds.Tables["LogBody"].DefaultView; 
gvLogBody.DataBind(); 

这给了我一个GridView,看起来像这样:

____________________________________________________________________________________________ 
|timeStamp|      name      |   message    | 
+---------+-----------------------------------------------+--------------------------------+ 
|01-01-01 | someLongAndQuiteUnnecesaryNameThatIWishToHide | someMessageThatIsMoreImportant | 
+---------+-----------------------------------------------+--------------------------------+ 

我要的是什么像这样:

_________________________________________________________ 
|timeStamp| name  |   message    | 
+---------+-------------+--------------------------------+ 
|01-01-01 | clickToShow | someMessageThatIsMoreImportant | 
+---------+-------------+--------------------------------+ 

一旦用户点击文本,它会展开/打开一个弹出窗口或其他东西。

这怎么办?

+1

您更好地使用JavaScript/jQuery的是什么,以及避免回传点击。现在,如果您使用javascript查找弹出式库,然后决定是否使用ajax来获取信息,或者您已在页面中显示并显示()/ hide()它。 – Aristos

回答

1

这段代码将帮助你。

<asp:GridView ID="gvLogBody" runat="server" CssClass="Grid" AllowPaging="true" AllowSorting="true" PageSize="10" AutoGenerateColumns="false"> 
        <Columns> 
         <asp:BoundField DataField="timeStamp" HeaderText="timeStamp" /> 
         <asp:TemplateField HeaderText="name"> 
          <ItemTemplate> 
           <input type="button" value="clickToShow" onclick="alert('<%#Eval("name") %>')" /> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:BoundField DataField="message" HeaderText="message" /> 
        </Columns> 
       </asp:GridView> 
+0

说那个System.Web.UI.WebControls.GridView没有公共属性BoundField和TemplateField和ItemTemplate –

+0

oh,nvm。我忘了把它放在

+0

我看到了。它是否像魅力一样工作?如果它起作用,那么接受我的答案是正确的。 – Ondipuli

1

为什么不使用jQueryUI的对话框了良好的外观和感觉弹出

<head runat="server"> 
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css"> 
    <script src="//code.jquery.com/jquery-1.10.2.js"></script> 
    <script src="//code.jquery.com/ui/1.11.0/jquery-ui.js"></script> 

    <script> 
     function openPopup(name) { 

      $('#<%= lblName.ClientID %>').text(name); 
      $("#dialog").dialog(); 
      return false; 
     }; 
    </script> 
</head> 

的,然后在身体

<asp:GridView ID="gvLogBody" runat="server" CssClass="Grid" AllowPaging="true" AllowSorting="true" PageSize="10" AutoGenerateColumns="false"> 
        <Columns> 
         <asp:BoundField DataField="timeStamp" HeaderText="timeStamp" /> 
         <asp:TemplateField HeaderText="name"> 
          <ItemTemplate> 
           <a href="#" onclick='javascript:return openPopup("<%#Eval("name") %>");'> 
           <%#Eval("name")%> 
          </a> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:BoundField DataField="message" HeaderText="message" /> 
        </Columns> 
       </asp:GridView> 
<div id="dialog" title="Basic dialog"> 
     <asp:Label ID="lblName" runat="server" ></asp:Label> 
</div>