よりGridViewのように読むようLableコントロールとLinkButtonコントロールをItemTemplateに追加:
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="Label20" runat="server" Text='<%#((string)Eval("ColumnName")).Length<20?Eval("ColumnName"):((string)Eval("ColumnName")).Substring(0,20)+"..." %>' ToolTip='<%#Eval("question") %>' Width="100"></asp:Label>
<asp:LinkButton ID="LinkButton1" runat="server" Visible='<%#SetVisibility(Eval("ColumnName"),20) %>' OnClick="LinkButton1_Click">Read More...</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
ここLableテキストは、それが唯一の20文字が含まれていますし、リンクボタンは、もっとしかしLableツールチップを読むことのすべての文字が含まれて表示されますカラム。リンクボタンをクリックするとイベントが発生し、そのラベルのすべてのデータが表示されます。
protected void LinkButton1_Click(object sender, EventArgs e)
{
//Read More Link Button from Gridview on Click
LinkButton lb = (LinkButton)sender;
GridViewRow row = lb.NamingContainer as GridViewRow;
//Finding the description Text Lable
Label qst = row.FindControl("Label20") as Label;
// Setting Link Button Text
lb.Text = (lb.Text == "Read More...") ? "Hide..." : "Read More...";
//Swaping tooltip value to text and vices versa as Tooltip has all charecters
string temp = qst.Text;
qst.Text = qst.ToolTip;
qst.ToolTip = temp;
}
protected bool SetVisibility(object Desc, int length)
{
return Desc.ToString().Length > length;
}
ご希望の解決策が見つかると幸いです。
更新:
あなたのコラムは、あなたがnullかどうかを確認してから変換することができ、これを処理するために、null値を持っているようだ:
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="Label20" runat="server" Text='<%#Eval("ColumnName")==DBNull.Value ? string.Empty :(((string)Eval("ColumnName")).Length<20?Eval("ColumnName"):((string)Eval("ColumnName")).Substring(0,20)+"...") %>' ToolTip='<%#Eval("question") %>' Width="100"></asp:Label>
<asp:LinkButton ID="LinkButton1" runat="server" Visible='<%# Eval("ColumnName")==DBNull.Value ? false :SetVisibility(Eval("ColumnName"),20) %>' OnClick="LinkButton1_Click">Read More...</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
アドバイスしたとおりにItemTemplateを追加してからaspx.csコードを使用しましたが、ページが正しく読み込まれません。エラーメッセージが表示されます。「System.String」という型の 'System.DBNull'型のオブジェクトをキャストすることができません。長さ<20?Eval( "Message")コード: 行110: 'Width = "100">(%)を返します。 –
Anoj
@anojあなたのDB列にはNull値があるようですので、これを処理するためにアップデートを追加してみてください。問題があれば、私に知らせてください。 –
私は謝罪しますが、更新されたコードはどこで使用しますか? – Anoj