انجمن‌های فارس وب

نسخه کامل: مشکل با gridView
شما در حال بازدید از بایگانی ارسال های انجمن هستید این نسخه کامل نیست : برای مشاهده نسخه کامل اینجا کلیک کنید
سلام

من یه gridView بروی فرمم دارم که محتویات آن را به یک جدول از بانکم بایند کردم.مشکلم اینجاست که می خوام یه checkbox به هر ردیف این gridView اضافه کنم که وقتی کاربر آن checkbox را انتخاب کرد ،آن رکورد از gridView به یک جدول دیگر اضافه شود.

سرچ کردم و یه کدایی پیدا کردم ولی با اونا کارم راه نیفتاد ،چون من نمیدونم باید چه تغییراتی را از قبل به gridView اعمال کنم.یعنی از ابتداش مشکل دارم.

لطفا با یک مثال منو راهنمایی کنید.

کدی که پیدا کردم:

protected void Button1_Click(object sender, EventArgs e)
    {
        int i, row_selected = 0;
        CheckBox chk = new CheckBox();

        for (i = 0; i <= myGridView.Rows.Count - 1; i++)
        {
            chk = (CheckBox)myGridView.Rows[i].FindControl("choose");
            if (chk.Checked)
            {
                row_selected++;
                Session["crs_selected_id" + row_selected.ToString()] = myGridView.Rows[i].Cells[0].Text;
                Session["full_payment"] = Convert.ToInt32(Session["full_payment"]) + Convert.ToInt32(myGridView.Rows[i].Cells[3].Text);
            }
        }
    }

من این کدو نوشتم ولی وقتی اجراش کردم اصلا checkbox ای وجود نداشت ،که من بخوام به حالت انتخاب در بیارم.

خطایی که برنامه داد:

Object reference not set to an instance of an object.

مگر با نوشتن این کد ،خودش به GridView ،چک باکس اضافه نمی کند؟اگر نه چه جوری باید اونو ایجاد کنم؟

shamstabrizi عزیز
کدی که شما قرار دادید چک باکسی رو به gridview اضافه نمی کنه ، بلکه تنها چک می کنه که آیا چک باکسی که اضافه شده تیک خورده یا نه ، اگر می خواین checkbox رو به Gridview اضافه کنید از روش زیر استفاده کنید :

ابتدا gridview تون رو اضافه و بایند می کنید ، بر روی گزینه های آن کلیک کرده و گزینه ی Add new column را انتخاب کرده


Type آن را به حالت Checkbox انتخاب می کنید و نام Header را انتخاب می کنید . سپس ok می کنید.


حال باید آن را به template تبدیل کنید تا بعدا بتوانید از کد خودتون استفاده کنید ، مجددا از گزینه ها Edit Columns را انتخاب می کنید ، Column اضافه شده را انتخاب می کنید و گزینه ی Convert this field to Templates را انتخاب کرده و ok می کنید .



سپس گزینه ی Edit Template را زده و از Properties نام Checkbox تان را از Checkbox1 به choose تبدیل می کنید




و End Template را از گزینه ها انتخاب می کنید.


حال کد خودتان را روی دکمه ای که می خواهد تغییرات یا Row های تیک خورده را بررسی کند اضافه می کنید.




امیدوارم مشکلتان حل شود.
مرسی از وقتی که گذاشتید و ممنون از جواب کاملتون.لبخند

اما من روش شما را امتحان کردم ولی به اون روش مشکلم حل نشد/من از vs2005 استفاده می کنم و توی مرحله ی دوم که شما نوع check box را انتخاب می کنید در صفحه ی من data Field به صورت یک comboBox است و خودش به صورت پیش فرض مقدار دارد و به یکی از فیلد های جدول من وصل شده است.(من در جدولم یک ستون به نام online از نوع boolian دارم ،شاید به خاطر این موضوع است.)
به هر حال من روش شما را تا آخرش رفتم ولی نتیجه این شد که checkBox های من غیر قابل تغییر بودند!
یعنی من نمی تونستم اون ها رو به حالت انتخاب در بیارم.
نمی دونم چرا با اون روش نمیشه .شما از Vs 2008 استفاده کردید؟
من توی یکی از سایتا دیگه روش دیگری با کد نویسی بهم پیشنهاد شد که مشکلم را از اون بابت برطرف کرد.کدشو اینجا میزارم:

<asp:GridView ID="GridView1" runat="server">
        <Columns>
        <asp:TemplateField>
        <ItemTemplate>
        <asp:CheckBox runat="server" ID="CheckBox">
        
          </asp:CheckBox>
        </ItemTemplate>
          
        </asp:TemplateField>
      
        </Columns>
        </asp:GridView>

شما می تونید به جای اینکه CheckboxField رو انتخاب کنید ،Template Field اضافه کنید و سپس گزینه ی Edit Template Field رو انتخاب کنید و یک Check box با نام choose اضافه کنید .
البته کدی هم که گذاشتید همین کار رو می کنه . فقط اگه می خواهید کد اولتون با این کار کنه باید ID رو عوض کنید.
مرجع آدرس ها