PDA

View Full Version : سوال: پاس دادن پارامتر به sql data source



mehrdad85
چهارشنبه 07 اردیبهشت 1390, 15:01 عصر
سلام
دوستان من یه sql data source دارم که میخام از طریق اون یه سری داده را به دیتابیش اضافه کنم اما نمیشه یعنی این داده ها را ازکنترل ها و text box های مختلف دریافت باید بکنه ولی این کنترل ها در form view هستن و بهشون دسترسی نداره
میخاستم ببینم چطور میتونم بهشون دسترسی داشته باشم؟
نظرتون در مورد این ایده چیه که از دستور find control استفاده کنم و اونو به control id در تگ insert parameter مربوط به sql data source مربوط به فایل aspx قرار بدم؟


من فقط این ایده را دارم
لطفا اگه ایده ای دیگه به ذهنتون خطور میکنه راهنمایی بفرمایید
در ضمن من فقط این ایده را دارم و از بکار بردن و پیاده سازی اون چیزی نمیدونم یعنی تست کردم نتونستم
ممنونتون میشم کد این یا چگونه ست کردن control id در تک insert parameter را برام بذارید یا راهنمایی کنید یا رفرنس بدید

مرسی

b.paseban
چهارشنبه 07 اردیبهشت 1390, 15:44 عصر
سلام بر شما.
اینایی که میگم از روی سورس جناب فتح اللهیه.
توی یکی از صفحات به اسم EnterTopic.aspx اومده برای درج تاپیک اینطوری عمل کرده.
یه sqldatasource قرار داده به اینصورت.


<asp:SqlDataSource ID="SqlDataSource_TopicSave" runat="server" __designer:wfdid="w68"
ConnectionString="<%$ ConnectionStrings:LocalSqlServer1 %>" InsertCommand="Forums_InsertTopics"
InsertCommandType="StoredProcedure" OnInserted="SqlDataSource_TopicSave_Inserted">
<InsertParameters>
<asp:SessionParameter DefaultValue="" Name="ForumID" SessionField="FID" Type="Int32" />
<asp:ControlParameter ControlID="TextBox_Title" DefaultValue="test" Name="Subject"
PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="Label_UserName" DefaultValue="" Name="UserID" PropertyName="Text"
Type="String" />
<asp:Parameter Name="UserIP" Type="String" />
<asp:Parameter Name="Message" Type="String" />
</InsertParameters>
</asp:SqlDataSource>

توی رویداد کلیک اون هم اینطوری عمل کرده:


if (Page.IsValid)
{
try
{
if (FCKeditor_Message.Value == "")
{
Label_Message.Text = " لطفا متن تاپیک را وارد نمایید";
return;
}
SqlDataSource_TopicSave.InsertParameters["Message"].DefaultValue = FCKeditor_Message.Value;
SqlDataSource_TopicSave.InsertParameters["UserIP"].DefaultValue = Request.UserHostAddress;
SqlDataSource_TopicSave.Insert();
}
catch(Exception ex)
{
Label_Message.Text = "به دلیل خطای زیر تاپیک شما ثبت نشد<br/>"+ex.Message;
}

}

همونطور که از کد معلومه SqlDataSource_TopicSave ای دی sqldatasource همون صفحه هست که یه SessionParameter برای ایدی منحصر بفرد اون جدول قرار داده(ForumID).دوتا ControlParameter قرار داده بکه یکی برای تایتل درج اون تاپیک به اسم TextBox_Title در نظر گرفته و یکی برای ای دی یوزر ثبت کننده تاپیک به اسم Label_UserName.دوتا هم parameter قرار داده به اسمهای UserIP و Message که ای پی کاربر و متن تاپیک ارسالی رو توی اون قرار میده.
حالا سمت codebehind هم اومده این دوتا مقدار آخری رو بعنوان مقدار پارامتر توی دیتا سورس قرار داده و بعدشم SqlDataSource_TopicSave.Insert();.
امیدوارم که کمکتون کنه.