PDA

View Full Version : آپدیت داده و نمایش آن در دیتا گرید



faramarz_s
پنج شنبه 27 شهریور 1382, 20:37 عصر
به نظر شما کد زیر چه ایرادی دارد؟

private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex = e.Item.ItemIndex;

bindToDatGrid("id");
}
//------------------------------------------------------------------------------------------------
private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex = -1;
bindToDatGrid("id");
}
//------------------------------------------------------------------------------------------------
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string id = ((TextBox)e.Item.Cells[1].Controls[0]).Text;
string un = ((TextBox)e.Item.Cells[2].Controls[0]).Text;
string uf = ((TextBox)e.Item.Cells[3].Controls[0]).Text;
string password = ((TextBox)e.Item.Cells[4].Controls[0]).Text;
string email = ((TextBox)e.Item.Cells[5].Controls[0]).Text;

SqlConnection conn =
new SqlConnection("server=(local);uid=sa;pwd=yaali;database=MDB;");

// Prepare the command text
String strCmd = "UPDATE tblPrimary SET password='"+
password+ "'" + "email='" + email+ "'"+
" WHERE id=" + id;


SqlCommand cmd = new SqlCommand(strCmd, conn);

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

// Reset the edit mode for the current item
DataGrid1.EditItemIndex = -1;

// create data source again.........
bindToDatGrid("id");

}

تکست باکسی ایجاد نمیشود.

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblPrimary]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tblPrimary]
GO

CREATE TABLE [dbo].[tblPrimary] (
[id] [int] NOT NULL ,
[un] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[uf] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[password] [nchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[email] [char] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO

Vahid_Nasiri
پنج شنبه 27 شهریور 1382, 21:13 عصر
تنها در صورتی تکست باکس ها ایجاد نمی شوند که رخداد آن تعریف نشده باشد:


this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHand ler(this.DataGrid1_UpdateCommand);

و همچنین در مورد سایرین.
یکبار دیگر رخداد ها را در کد مرور کنید.

faramarz_s
جمعه 28 شهریور 1382, 10:51 صبح
مشکل حل شد اما در مورد کلید پرایمری جدول هنگام آپدیت ایراد زیر را می گیرد:

Specified cast is not valid.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidCastException: Specified cast is not valid.



Source Error:


Line 85: private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
Line 86: {
Line 87: string id = ((TextBox)e.Item.Cells[1].Controls[0]).Text;
Line 88: string un = ((TextBox)e.Item.Cells[2].Controls[0]).Text;
Line 89: string uf = ((TextBox)e.Item.Cells[3].Controls[0]).Text;

Vahid_Nasiri
جمعه 28 شهریور 1382, 11:14 صبح
قرار ما این بود که در هر تاپیک یک سوال (قوانین سایت...) :wink:
---------------

Specified cast is not valid.
یعنی برای مثال فیلد شما عددی است و شما دارید string‌ وارد می کنید ( در یک کوئری) .
casting‌ یعنی تبدیل یک نوع داده به داده ی دیگر.
لطفا این مورد را چک کنید مشکل حل می شود.