PDA

View Full Version : گرفتن مقدار از یک ستون دیتا گرید



rezaei manesh
چهارشنبه 30 فروردین 1385, 11:19 صبح
سلام
یه ستون انتخاب(چک باکس) به گرید اضافه کردم اکنون می خوام هر کدوم که کلیک شد مقدار ستون نام اون را برای مثال در یک متقیر قرار بدم؟
البته این کار زمانی صورت می گیره که کاربر رویه دکمه ای در فرم کلیک کنه(روی گرید دکمه ای ندارم)

reza_rad
چهارشنبه 30 فروردین 1385, 11:32 صبح
توی یه loop مقایر رو چک کن :


CheckBox chkSelect;
foreach (DataGridItem dgiUsers in this.dgrdUsers.Items)
{
chkSelect = (CheckBox)dgiUsers.Cells[0].Controls[1];
if (chkSelect.Checked)
{
//put your code here....
}
}

rezaei manesh
چهارشنبه 30 فروردین 1385, 15:43 عصر
سلام
مشکل من پیدا کردن شماره رکورد نیست من شماره رکوردی رو که تیک خورده رو دارم اما من می خوام مثلا مقدار نام (ستون 2) را از رکورد 5 بردارم چکار کنم؟

nazaninam
چهارشنبه 30 فروردین 1385, 17:46 عصر
اگه شماره رکورد رو دارید با دستور dgiUsers.Cells[0].text مقدار داخل اون سلول رو در بیارید

rezaei manesh
چهارشنبه 30 فروردین 1385, 18:33 عصر
سلام
با این دستور شما نمیشه آخه من شماره ستون و شماره رسطر رو کجا بدم؟
Dim chkRow As WebControls.CheckBox
Dim DBLC As DataBoundLiteralControl
Dim strIDs As String = ""
Dim boolCheck As Boolean
For Each DGItem As DataGridItem In GrdRank.Items
chkRow = CType(DGItem.FindControl("chkRow"), WebControls.CheckBox)
If chkRow.Checked Then
boolCheck = True
TxtRank.Text = DGItem.Cells(0).Text
DBLC = DGItem.FindControl("ItemNumRemove").Controls(0)
TxtRank.ToolTip = DBLC.Text
Exit Sub
End If
Next
اینم کدم با این کد یک رشته تهی بر می گردونه

nazaninam
چهارشنبه 30 فروردین 1385, 23:24 عصر
کدی که من باستون نوشتم مشکلی نداره مشکل رو درجای دیگه بررسی کنید!

rezaei manesh
پنج شنبه 31 فروردین 1385, 07:41 صبح
سلام
راستی ستون هام از نوع templete هستش ؟
0 در کد زیر چیه
DGItem.Cells(0).Text
من شماره های ستونم رو هم ایجا کذاشتم اما بازم جواب نداد

nazaninam
پنج شنبه 31 فروردین 1385, 10:31 صبح
اگه از نوع template هستند شما باید کنترل مربوط رو پیدا کنید بعد مقدارش رو بدست بیارید
مثلا همون کاری که برای textbox انجام دادید برای اون literalcontrol هم انجام بدید و مقدار داخل اون رو بدست بیارید... اینجا نمونه زیاد هست از اعمال متداول استفاده کنید کارتون سریع را میوفته

rezaei manesh
پنج شنبه 31 فروردین 1385, 11:26 صبح
سلام این کد رو اضافه کردم نشد؟
DBLC = DGItem.FindControl("Rank").Controls(0)
TxtRank.Text = DBLC.Text
البته حق هم داره آخه من کنترلی به این نا مندارم این نام فیلدم هست که اونو توی ستون سوم دیتا گرید ریختم
نمیشه یه خط کد بذارین تا من خلاص شم ؟ گشتم چیزی پیدا نکردم

nokhod
پنج شنبه 31 فروردین 1385, 20:45 عصر
سلام.

توی تابع دکمتون اینو بنویسید:


for (int i=0 ; i<dg.Rows.Count ; i++)
{
Label lb = (Label)dg.Rows[i].FindControl("YourLabelName");
CheckBox chb = (CheckBox)dg.Rows[i].FindControl("YourLabelName");
if (chb.Checked == true)
{
YourTextBoxOnForm.Text = lb.Text;
}
}


موفق باشید.

rezaei manesh
شنبه 02 اردیبهشت 1385, 07:58 صبح
سلام
آخه من مقدار نام را توی هیچ کنترلی قرار ندادم که (آگه قرار می دادم خیلی راحت می شد ) می خوام بدونم بدون کنترل هم میشه یا نه
ا کد شما (نخود) در صورتی کار می کنه که من نام رو توی لیبل گذاشته باشم

mp2009
سه شنبه 27 شهریور 1386, 02:03 صبح
سلام به تمامی کاربران محترم سایت
یه مشکل کوچولو دارم ببینم کسی میتونه کمک کنه

من یه دونه گرید ویو دارم که یکی از سطونهاش چک باکس هست
میخواهم کاربر هر سطی رو که تیک زد حذف کنه


این کد من هست



CheckBox chkRemove=newCheckBox();
DataBoundLiteralControl DBLC;
string strIDs= "";
bool boolCheck= false;
foreach (GridViewRow gvRow in GridView_NewsList.Rows)
{
chkRemove = (CheckBox)GridView_NewsList.FindControl("ChkRemove");
if (chkRemove.Checked == true)
{
boolCheck = true;

DBLC = (DataBoundLiteralControl)GridView_NewsList.FindCon trol("ItemNumRemove").Controls[0];
strIDs += DBLC.Text + ",";

}
}
if (boolCheck == true)
{

string strSQL = "Delete * From news Where Id IN ('" + strIDs.Substring(0, strIDs.LastIndexOf(",")) + "')";
SqlConnection con = newSqlConnection(st);
SqlCommand cmd = newSqlCommand(strSQL,con);

try
{
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
catch (SqlException ex)
{
Response.Write(ex.Message.ToString());
}
finally
{

}
}


اینم کد گرید ویو



<asp:GridViewID="GridView_NewsList"runat="server"AutoGenerateColumns="False"DataKeyNames="Id"
DataSourceID="SqlDataSource1"Font-Names="Tahoma"Font-Size="9pt"Font-Strikeout="False"
Width="732px"OnSelectedIndexChanged="GridView_NewsList_SelectedIndexChanged"OnRowDataBound="GridView_NewsList_RowDataBound"EmptyDataText="چیزی برای نمایش وجود ندارد"AllowPaging="True"OnRowDeleting="GridView_NewsList_RowDeleting"ShowFooter="True">
<FooterStyleBackColor="Wheat"/>
<EmptyDataRowStyleBackColor="SteelBlue"Wrap="True"/>
<Columns>
<asp:TemplateField>
<FooterTemplate>
<asp:ButtonID="btnRemove"runat="server"BackColor="#FFC080"BorderStyle="Solid"
BorderWidth="1px"CommandName="delete"Font-Names="Tahoma"Font-Size="11px"Height="22px"
Text="حذف"Width="64px"/>
</FooterTemplate>
<ItemTemplate>
<asp:CheckBoxID="ChkRemove"runat="server"/>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandFieldButtonType="Button"DeleteText="حذف خبر"SelectText="ویرایش"ShowSelectButton="True"UpdateText="save">
<ItemStyleBorderWidth="1px"/>
<ControlStyleBackColor="Gainsboro"BorderColor="#404040"BorderWidth="1px"/>
</asp:CommandField>
<asp:BoundFieldDataField="Username"HeaderText="نویسنده"SortExpression="Username"/>
<asp:BoundFieldDataField="Time"HeaderText="ساعت درج"SortExpression="Time">
<ItemStyleWidth="100px"/>
</asp:BoundField>
<asp:BoundFieldDataField="Date"HeaderText="تاریخ"SortExpression="Date"/>
<asp:TemplateFieldFooterText="خلاصه خبر"HeaderText="خلاصه خبر"SortExpression="Body">
<ItemStyleWidth="150px"/>
<ItemTemplate>
&nbsp;<asp:PanelID="Panel2"runat="server"Height="50px"ScrollBars="Vertical"Width="221px">
<asp:LabelID="Label1"runat="server"Text='<%# Eval("Body") %>'></asp:Label></asp:Panel>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateFieldFooterText="عنوان"HeaderText="عنوان">
<ItemStyleWidth="130px"/>
<ItemTemplate>
&nbsp;&nbsp;
<asp:LabelID="Label5"runat="server"Text='<%# Eval("Title") %>'></asp:Label>&nbsp;
</ItemTemplate>
<AlternatingItemTemplate>
&nbsp;
</AlternatingItemTemplate>
</asp:TemplateField>
<asp:BoundFieldDataField="Id"HeaderText="کد خبر"InsertVisible="False"ReadOnly="True"
SortExpression="Id">
<ItemStyleWidth="35px"/>
</asp:BoundField>
<asp:TemplateField>
<ItemTemplate>
<asp:LabelID="ItemNumRemove"runat="server"Visible="False"Text='<%# Eval("Id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<RowStyleBackColor="InactiveCaptionText"/>
<EditRowStyleBackColor="CornflowerBlue"/>
<SelectedRowStyleBackColor="PeachPuff"/>
<HeaderStyleBackColor="Wheat"Font-Names="Arial"Font-Size="Medium"ForeColor="#400000"/>
</asp:GridView>


وقتی اجرا میکنم این ارور رو میده




Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

mp2009
سه شنبه 27 شهریور 1386, 11:42 صبح
کسی جواب مارو نمیده؟

به خدا خیلی فوریه کمک کنییییییییییییییییید
با تشکر

rezaei manesh
سه شنبه 27 شهریور 1386, 11:54 صبح
خطا تو کدوم خط اتفاق می افته ؟

ببین اطلاعات حذف می شه ولی موقع نمایش خطا می ده یا نه بر عکس و یا اینکه اطلاعات قبل اینکه به بانک بره مشکل داره
خطای شما می گه که انکدکسی که استفاده کردی خارج از رنج هست اول ببین کدوم رنج رو می گه ؟!

mp2009
سه شنبه 27 شهریور 1386, 12:14 عصر
اصلا هیچ کاری انجام نمیده فقط همون erorr که گفتم میده