2011-06-23 13 views
3

私は、データベースからデータを取り出し、そのフィールドを自動的に取り込むGridViewを持っています。あまりにも多くのテキストを含むGridView

<asp:GridView ID="gvData" runat="server" CellPadding="4" 
     ForeColor="#333333" GridLines="None" AllowPaging="True" AutoGenerateDeleteButton="True" 
     AutoGenerateEditButton="True" DataSourceID="DS" PageSize="1" CssClass="q"> 
     <RowStyle BackColor="#F7F6F3" ForeColor="#333333" Height="20" CssClass="q"/> 
     <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#284775" ForeColor="White" /> 
     <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> 
     <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
     <EditRowStyle BackColor="#999999" Height="15px" /> 
     <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
    </asp:GridView> 
    <asp:SqlDataSource ID="DS" runat="server"></asp:SqlDataSource> 

一部のフィールドが長すぎます。テキストの長さを切り、新しいウィンドウにテキストをポップアップするボタンを挿入する方法はありますか? グリッドビューは編集と削除のボタンも生成します。編集ボタンを押すと小さなテクスチャボックスが表示されます。編集のためにポップアップウィンドウで同じボタンを作るために、どうすればそれらを回避できますか?

私が考えた別の方法は、スクロールバーでテキストエリアを作成することでした。私は手動でスクロールバーでフィールドを追加する方法を知っていますが、ラベルとして作成されるので、編集を押すと、このフィールドは編集できません。また、マニュアルですが、私のgridviewは自動的に読み込まれます。スクロールバーを自動的に使用して大域フィールドにテキストエリアを設定するにはどうすればよいですか?

ご協力いただきますようお願い申し上げます。ありがとうございました!

protected void gvData_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     for (int i = 0; i < e.Row.Cells.Count; i++) 
     { 
      ViewState["OrigData"] = e.Row.Cells[i].Text; 
      if (e.Row.Cells[i].Text.Length >= 30) 
      { 
       e.Row.Cells[i].Text = e.Row.Cells[i].Text.Substring(0, 30) + "..."; 
       e.Row.Cells[i].ToolTip = ViewState["OrigData"].ToString(); 
      } 
     } 

    } 

} 

が続いOnRowDataBound = "gvData_RowDataBound" を追加します:これは、30文字までの長さをカットして表示し

<asp:GridView ID="gvData" runat="server" CellPadding="4" ForeColor="#333333" 
GridLines="None" AllowPaging="True" AutoGenerateDeleteButton="True" 
AutoGenerateEditButton="True" DataSourceID="DS" PageSize="1" 
OnRowDataBound="gvData_RowDataBound"> 


わかりましたので、私は短縮テキストのための解決策を見つけましたツールチップの全文

答えて

1

回答:

protected void gvData_PreRender(object sender, EventArgs e) 
{ 
    if (this.gvData.EditIndex != -1) 
    { 
     TextBox tb = new TextBox(); 

     for (int i = 0; i < gvData.Rows[gvData.EditIndex].Cells.Count; i++) 
      try 
      { 
       tb = (TextBox) 
        gvData.Rows[gvData.EditIndex].Cells[i].Controls[0]; 

       if (tb.Text.Length >= 30) 
       { 
        tb.TextMode = TextBoxMode.MultiLine; 
       } 
      } 
      catch { } 
     } 
} 
1

この投稿を見て、私はそれが役に立つと思う。第二部へ

http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/051887c6-2d87-4361-a5a1-cd5213609673/

+0

申し訳ありませんが、私は、Webアプリケーションではなく、フォームを作っています、言及しませんでした。しかし、リンクのおかげで! –

+0

haha​​、okこのリンクは役に立つかもしれませんhttp://techybit.com/index.php/applications/gridview-ajax-popup-code/ – JAiro

+0

これはかなりハードコードされています。私には約30の畑があり、時々変化するかもしれません... –

関連する問題