Cortar string longa.
Muitas das vezes precisamos cortar um texto em determinado número de caracteres e colocar reticências, e para agilizar neste tipo de problema segue um método que ajudará e muito neste sentido.
public string CortarString(string textCrop, int num, string trail)
{
var result = "";
var rx = new Regex("<[^>]*>");
textCrop = rx.Replace(textCrop, "");
var iMax = num - trail.Length;
if (iMax <= 0)
{
result = "";
}
if (textCrop.Length <= num)
{
result = textCrop;
}
else
{
try
{
var sOut = textCrop.Substring(0, num);
var iPos = sOut.LastIndexOf(" ");
if (iPos != -1)
{
return sOut.Substring(0, iPos) + trail;
}
iPos = sOut.Length;
return sOut.Substring(0, iPos) + trail;
}
catch (Exception ex)
{
Erros.FormataErro(ex);
}
}
return result;
}
Para utilização basta chamar o metodo e passar os parametros:
textCrop = seu texto completo
num = quatidade de caracteres que vc deseja exibir
trail = o que você quer no final do corte ex: "...", "."
Observação: ao passar seu texto para o método, ele remover qualquer tipo de tag HTML.
Converte Imagem em Array e Array em Imagem.
Dois método bastantes úteis que utilizo para converter imagem em array e fazer o processo contrário tb.
1 - Importe a classe: System.Drawing.Imagem;
//Método que converte a imagem em um Array
public static byte[] ConvertImageToByteArray(Image image, ImageFormat imageFormat)
{
if (image == null)
return null;
MemoryStream ms = new MemoryStream();
image.Save(ms, imageFormat);
return ms.ToArray();
}
//Método que convert o Array em uma Image
public static Image ConvertByteArrayToImage(byte[] byteArray)
{
if (byteArray == null || byteArray.Length == 0)
{
return (null);
}
return (Image.FromStream(new MemoryStream(byteArray)));
}
Paginando GridView usando Web User Control
1 – Crie um novo web user control.
2 – No arquivo “ascx”, coloque
<div class="pager">
<span class="results1">
<asp:ImageButton AlternateText="Primeira página" ToolTip="Primeira página" ID="ImageButtonFirst" runat="server" ImageUrl="Images/PgFirst.gif" Width="8" Height="9" CommandName="Page" CommandArgument="First" />
<asp:ImageButton AlternateText="Página anterior" ToolTip="Página anterior" ID="ImageButtonPrev" runat="server" ImageUrl="Images/PgPrev.gif" Width="5" Height="9" CommandName="Page" CommandArgument="Prev" />
<span id="LabelPage" runat="server" />
<asp:TextBox ID="TextBoxPage" runat="server" Columns="5" AutoPostBack="true" ontextchanged="TextBoxPage_TextChanged" Width="20px" CssClass="droplist" />
de
<span id="LabelNumberOfPages" runat="server" />
<asp:ImageButton AlternateText="Próxima página" ToolTip="Próxima página" ID="ImageButtonNext" runat="server" ImageUrl="Images/PgNext.gif" Width="5" Height="9" CommandName="Page" CommandArgument="Next" />
<asp:ImageButton AlternateText="Página anterior" ToolTip="Página anterior" ID="ImageButtonLast" runat="server" ImageUrl="Images/PgLast.gif" Width="8" Height="9" CommandName="Page" CommandArgument="Last" />
</span>
<span class="results2">
Registros por página: <asp:DropDownList ID="DropDownListPageSize" runat="server" AutoPostBack="true" CssClass="droplist" onselectedindexchanged="DropDownListPageSize_SelectedIndexChanged">
<asp:ListItem Value="20" />
<asp:ListItem Value="40" />
</asp:DropDownList>
</span>
</div>
3 – No arquivo “ascx.cs”
private GridView _gridView;
protected void Page_Load(object sender, EventArgs e) {
Control c = Parent;
while (c != null) {
if (c is GridView) {
_gridView = (GridView)c;
break;
}
c = c.Parent;
}
}
protected void TextBoxPage_TextChanged(object sender, EventArgs e) {
if (_gridView == null) {
return;
}
int page;
if (int.TryParse(TextBoxPage.Text.Trim(), out page)) {
if (page <= 0) {
page = 1;
}
if (page > _gridView.PageCount) {
page = _gridView.PageCount;
}
_gridView.PageIndex = page - 1;
}
TextBoxPage.Text = (_gridView.PageIndex + 1).ToString();
}
protected void DropDownListPageSize_SelectedIndexChanged(object sender, EventArgs e) {
if (_gridView == null) {
return;
}
DropDownList dropdownlistpagersize = (DropDownList)sender;
_gridView.PageSize = Convert.ToInt32(dropdownlistpagersize.SelectedValue);
int pageindex = _gridView.PageIndex;
_gridView.DataBind();
if (_gridView.PageIndex != pageindex) {
//if page index changed it means the previous page was not valid and was adjusted. Rebind to fill control with adjusted page
_gridView.DataBind();
}
}
protected void Page_PreRender(object sender, EventArgs e) {
if (_gridView != null) {
LabelNumberOfPages.InnerText = _gridView.PageCount.ToString();
TextBoxPage.Text = (_gridView.PageIndex + 1).ToString();
DropDownListPageSize.SelectedValue = _gridView.PageSize.ToString();
}
}
4 – Crie o css para formar a paginação
div.pager { padding: 3px 6px 3px 6px; }
span.results1 { float: left; }
span.results2 { float: right; }
div.results { display: inline; position: relative; margin-top: -1.75em; float: right; }
.droplist { padding: 0px; font-size: .95em; color: #666666; }
5 – em suas páginas que utilizam grid view
Registre seu web user control
<%@ Register src="meucontrole.ascx" tagname="controle" tagprefix="uc1" %>
E em seu Grid
<PagerTemplate>
<uc1:controle ID="pager" runat="server" />
</PagerTemplate>
6 – e obtenha o seguinte resultado:
Espero que Ajude!!!