Узнать ширину колонок в aspxgrid?
Kite
Дата: 24.04.2007 04:50:27
Использую Devexspress aspxgrid
-для самого грида устанавливаю ширину 100%
-для колонок, тоже ширину в %
А как унать реальную ширину колонок в пикселах??
Пытался в коде смотреть this.dg.Columns[i].Width.Value
-но выдается значение в %, которое сам и устанавливал в дизайнере
Для обычного html Table нашел способ myTable.firstChild.firstChild.childNodes[0].style.width, но к aspxgrid , я так и не смог его использовать..
С уважением, Владимир.
Zorina
Дата: 24.04.2007 10:37:32
реальная ширина известна когда страница отображается браузером, для этого можно попробовать использовать свойство html-элементов
offsetWidth
Kite
Дата: 25.04.2007 02:08:56
Спасибо.
Теперь осталась только проблема, к какому элементу этого чертового aspxgrid'а обратиться с этим свойством...
Zorina
Дата: 25.04.2007 11:07:47
мне кажется проще всего присвоить колонкам хедера id, grv.HeaderRow.Cells[0].Attributes.Add("id", "myCell0");
и потом обращаться к ним через яву-скриптdocument.getElementById("myCell0").offsetWidth
а зачем вообще?:)
Kite
Дата: 28.04.2007 04:04:29
гм.. а у какого контролла есть такие св-ва? не нашел...
А нужно это в странице с двумя гридами, и один грид должен выравниваться по колонкам другого. Сейчас ширина колонок расползается из-за расширения колонок под размер выводимых данных.
Zorina
Дата: 28.04.2007 05:38:18
я не совсем поняла, какие свойства вы не нашли.
то что я описала - добавить id -атрибут каждому заголовку грида. после чего с помощью явы-скрипта найти соответственно колонку и ее ширину.
Kite
Дата: 28.04.2007 12:21:21
Кажется, разобрался: я нашел контрол System.Web.UI.WebControls.GridView в 2005VS у которого есть такое св-во(HeaderRow), я в 2003VS не могу найти ничего подобного:(
В любом случае, спасибо за помощь, .
Zorina
Дата: 28.04.2007 14:25:36
Это я упустила из внимания, но от перемены мест сущность не меняется,
вам нужно добавить айди в каждую колонку, чтобы потом узнать ее ширину, значит сделайте
DataGrid1.Items[0].Cells[0].Attributes.Add("id","MyID");
или eсли у вас есть в гриде header можно подписаться на
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType== ListItemType.Header)
{
e.Item.Cells[0].Attributes.Add("id","MyID");
}
}
Kite
Дата: 03.05.2007 07:01:29
cпасибо! Все великолепно сработало!
*->