ورود

View Full Version : مشکل پارامتر ورودی برای دستور insert که از gridView تامین می شود



بیتافرهی
دوشنبه 31 فروردین 1388, 01:13 صبح
سلام
من یه GridView روی فرمم دارم که اسامی دروس را نشان می دهد.در هر سطر این گرید ویو نیز یک check Box گذاشته ام که اگر کاربر اونو انتخاب کرد این درس به جدول دروس انتخاب شده توسط کاربر اضافه شود.می خوام کاربر اول دروسی که می خواد انتخاب کنه بعد دکمه ی ارسال را بزنه(قابلیت چند انتخابی داشته باشه)
من از کد زیر استفاده کردم:

protected void Button1_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
CheckBox checkbox = (CheckBox)row.FindControl("choose");

if (checkbox.Checked)
{

SqlDataSource1.Insert();
}
}

}و روی sqlDataSource هم در insert Query کد زیر را نوشتم:

INSERT INTO Tbl_pish_sabteName_course(userName_as_stdNum, crs_name, term) VALUES (@userName_as_stdNum, @crs_name, 1)الان مشکل من با این پارامترهای ورودی است.پارامتر اول را از طریق session تامین می شود که مشکلی ندارم ولی با پارامتر دوم که از طریق یکی از ستون های gridView تامین می شود مشکل دارم .چون وقتی اجرا می کنم ،پیغام خطای زیر را می دهد:

Cannot insert the value NULL into column 'crs_name', table 'DB_UNI_VIRTUAL.dbo.Tbl_pish_sabteName_course'; column does not allow nulls. INSERT fails.
The statement has been terminated. کد مربوط به پارامترهای ورودی در sqlDataSource هم به قرار زیر است:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DB_UNI_VIRTUALConnectionString4 %>"
SelectCommand="SELECT [crs_id], [crs_name], [unit], [price], [have_preRequrement] FROM [Tbl_course_register]" InsertCommand="INSERT INTO Tbl_pish_sabteName_course(userName_as_stdNum, crs_name, term) VALUES (@userName_as_stdNum, @crs_name, 1)" >
<InsertParameters>

<asp:SessionParameter Name="userName_as_stdNum" SessionField="usr" DefaultValue="" />
<asp:ControlParameter ControlID="GridView1" Name="crs_name" PropertyName="SelectedValue"/>

</InsertParameters>
</asp:SqlDataSource>الان مشکل من با پارامتر دومه.مقدار پارامتر crs_name از ستون دوم گرید ویو باید به دست بیاد.ظاهرا که درسته ولی نمی دونم چرا همچین خطایی میده.لطفا منو راهنمایی کنید.

iman_22a
دوشنبه 31 فروردین 1388, 01:56 صبح
مقدار پارامتر دوم رو از یک Dropdownlist می خونین ؟ اگر آره . مقدار SelectedValue رو داره Null بر می گردونه . چک کنین که Value از Dropdownlist تنظیم شده باشه (فقط ممکنه Display تنظیم شده باشه)

بیتافرهی
دوشنبه 31 فروردین 1388, 07:52 صبح
مقدار پارامتر دوم رو از یک Dropdownlist می خونین ؟ خیر.از یکی از ستون های معمولی GridView که از نوع خاصی نیست.همون حالت پیش فرضش.اینم کد GridView:


<asp:GridView ID="GridView1" runat="server" Style="z-index: 100; left: 104px; position: absolute;
top: 120px" AutoGenerateColumns="False" DataKeyNames="crs_id" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="crs_id" HeaderText="crs_id" ReadOnly="True" SortExpression="crs_id" />
<asp:BoundField DataField="crs_name" HeaderText="crs_name" SortExpression="crs_name" />
<asp:BoundField DataField="unit" HeaderText="unit" SortExpression="unit" />
<asp:BoundField DataField="price" HeaderText="price" SortExpression="price" />
<asp:CheckBoxField DataField="have_preRequrement" HeaderText="have_preRequrement"
SortExpression="have_preRequrement" />

<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="cbRows" runat="server"/>
</ItemTemplate>
</asp:TemplateField>

</Columns>
</asp:GridView>