PDA

View Full Version : سوال: حذف ، ویرایش و اضافه کردن row در gridview با سه button خارج از گرید



nic2009
یک شنبه 24 دی 1391, 22:09 عصر
سلام. میخوام برای حذف ، درج و ویرایش ردیفهای گرید ویو از سه دکمه بیرون از گرید استفاده کنم و نمیخوام از دکمه های پیش فرض گرید که در هر ردیف تکرار میشن استفاده کنم. لطفا راهنمایی کنید که چی کار کنم. اگر کدی دارین که کمک کنه ممنون میشم.

Mishtolak
یک شنبه 24 دی 1391, 22:55 عصر
درود.
من معمولا یک رادیو باتوم به گردید اضافه میکنم که کاربر بتونه سطر مورد نظر رو انتخاب یا سلکت کنه بعد میتونید با دکمه های خارج فرم سطر انتخاب شده رو دیتاش رو بخونید و هر کاری خواستید انجام بدید.

برای اضافه کردن رادیو باتوم به گرید از کدی شبیه این استفاده کنید :


<asp:TemplateField ShowHeader="false">
<ItemTemplate>
<asp:RadioButton ID="ChkOK" runat="server" onclick="javascript:CheckOtherIsCheckedByGVID(this);" />
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle BackColor="#C6C3C6" HorizontalAlign="Center" VerticalAlign="Middle" Width="20px" />
</asp:TemplateField>


تابع جاوا زیر رو هم به فرم اضافه کنید:



function CheckOtherIsCheckedByGVID(spanChk) {
var IsChecked = spanChk.checked;
if (IsChecked) {
spanChk.parentElement.parentElement.style.color = '#CC3300';
}
var CurrentRdbID = spanChk.id;
var Chk = spanChk;
Parent = document.getElementById("<%=frmGridView.ClientID%>");
var items = Parent.getElementsByTagName('input');
for (i = 0; i < items.length; i++) {
if (items[i].id != CurrentRdbID && items[i].type == "radio") {
if (items[i].checked) {
items[i].checked = false;
items[i].parentElement.parentElement.style.color = 'black';
}
}
}
}


حالا هر جا میخواهید اطلاعات رکورد انتخاب شده رو بدست بیارید از کد زیر استفاده کنید:


foreach (GridViewRow gvRow in frmGridView.Rows)
{
ChkOK = (RadioButton)gvRow.FindControl("ChkOK");
if (ChkOK.Checked)
{
//Command
}
}


موید باشید

nic2009
دوشنبه 25 دی 1391, 00:30 صبح
حالا هر جا میخواهید اطلاعات رکورد انتخاب شده رو بدست بیارید از کد زیر استفاده کنید:


foreach (GridViewRow gvRow in frmGridView.Rows)
{
ChkOK = (RadioButton)gvRow.FindControl("ChkOK");
if (ChkOK.Checked)
{
//Command
}
}


موید باشید

سلام . ممنون از پاسختون.
الان توی این بخش foreach ، میشه index رو گرفت که از 0 شروع میشه به تعداد n-1 ردیف گرید که ربطی به Id ذخیره شده توی دیتابیس نداره. چطوری من از روی index هر ردیف، آیدی اون در دیتابیس رو به دست بیارم که بتونم اون row رو پاک کنم یا ویرایش کنم؟

nic2009
دوشنبه 25 دی 1391, 02:23 صبح
ترجیحاً دنبال راهی هستم که نیاز به اضافه کردن ستون چک باکس نداشته باشه. گفتن کد زیر رو امتحان کنم اما نمیدونم چطوری از روی ایندکس به آیدی هر ردیف در گرید دسترسی پیدا کنم که بتونم آیدی رو بفرستم به sp، برای پاک کردن ردیف یا ویرایش.



protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
foreach (GridViewRow row in GridView1.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
row.Attributes["onclick"] =ClientScript.GetPostBackClientHyperlink(GridView1 , "Select$" + row.DataItemIndex, true);
}
}
base.Render(writer);
}