PDA

View Full Version : مشکل update در گریدویویی که به صورتtemplate استفاده شده



imanasp
پنج شنبه 10 دی 1388, 17:58 عصر
سلام به دوستان امیدوارم حوصلتون سر نره چون میخام کلی کد واستون نمایش بدم
من از کد زیر برای بایند شدن گریدویو به بانک استفاده کردم:

protected void Page_Load(object sender, EventArgs e)
{
DataSet ds = new DataSet();
SqlDataAdapter dar = new SqlDataAdapter();
dar.SelectCommand = new SqlCommand();
dar.SelectCommand.Connection = cnn;
dar.SelectCommand.CommandText = "select * from vw_Users";
dar.FillSchema(ds, SchemaType.Source, "vw_Users");
dar.Fill(ds, "vw_Users");
gdwSubject.DataSource = ds;
gdwSubject.DataMember = "vw_Users";
gdwSubject.DataBind();

}و کد html گریدویو نیز به این ترتیب تعریف کردم:

<asp:GridView ID="gdwSubject" runat="server" AutoGenerateColumns="False" CellPadding="4"
ForeColor="#333333" GridLines="None" PageSize="5" Width="600px"
AllowPaging="True"
onrowcommand="gdwSubject_RowCommand"
onrowupdating="gdwSubject_RowUpdating">
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<Columns>
<asp:TemplateField HeaderText="همکاران و ناظران">
<ItemTemplate>
<div style="text-align: center">
<table style="border-right: #999999 thin dotted; border-top: #999999 thin dotted;
border-left: #999999 thin dotted; width: 100%; border-bottom: #999999 thin dotted;
height: 100%">
<tr>
<td>
<strong>وضعیت همکاری</strong></td>
<td>
<strong>نوع همکاری</strong></td>
<td>
<strong>نام کاربری</strong></td>
<td>
<strong>نام همکار/ناظر </strong>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label16" runat="server" Text='<%# Eval("uActive") %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label15" runat="server" Text='<%# Eval("uType") %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label17" runat="server" Text='<%# Bind("userName") %>'></asp:Label>
</td>
<td>
<asp:Label ID="Label14" runat="server" Text='<%# Bind("uName") %>'></asp:Label>
</td>
</tr>
<tr>
<td align="right" colspan="3" dir="rtl" style="height: 10px">
<asp:Label ID="Label12" runat="server" Text='<%# Bind("sName") %>'></asp:Label>
</td>
<td>
<strong>: مرتبط با استان</strong></td>
</tr>
<tr>
<td align="right" colspan="3" dir="rtl" style="height: 10px">
<asp:Label ID="Label13" runat="server" Text='<%# Bind("bName") %>'></asp:Label>
</td>
<td>
<strong>: مرتبط با رشته</strong></td>
</tr>
</caption>
</table>
</div>

</ItemTemplate>
<EditItemTemplate>
&nbsp;
<table style="border-right: #999999 thin dotted; border-top: #999999 thin dotted;
border-left: #999999 thin dotted; width: 100%; border-bottom: #999999 thin dotted;
height: 100%">
<tr>
<td>
<strong>وضعیت همکاری</strong></td>
<td>
<strong>نوع همکاری</strong></td>
<td>
<strong>نام کاربری</strong></td>
<td>
<strong>نام همکار/ناظر </strong>
</td>
</tr>
<tr>
<td>
<asp:RadioButtonList ID="rblEditActive" runat="server"
RepeatDirection="Horizontal">
<asp:ListItem Value="فعال">فعال</asp:ListItem>
<asp:ListItem Value="غیر فعال">غیر فعال</asp:ListItem>
</asp:RadioButtonList>
</td>
<td>
<asp:RadioButtonList ID="rblEditType" runat="server"
RepeatDirection="Horizontal">
<asp:ListItem Value="ناظر">ناظر</asp:ListItem>
<asp:ListItem Value="همکار">همکار</asp:ListItem>
</asp:RadioButtonList>
</td>
<td>

<asp:TextBox ID="txtEditUser" runat="server" CssClass="txt" ReadOnly="True"
Text='<%# Bind("userName") %>'></asp:TextBox>

</td>
<td>
<asp:TextBox ID="txtEditName" runat="server" CssClass="txt"
Text='<%# Bind("uName") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td align="right" colspan="3" dir="rtl" style="height: 10px">
<asp:DropDownList ID="drpEditState" runat="server" CssClass="ddl"
DataSourceID="sqlState" DataTextField="sName" DataValueField="sId"
Width="250px">
</asp:DropDownList>
</td>
<td>
<strong>: مرتبط با استان</strong></td>
</tr>
<tr>
<td align="right" colspan="3" dir="rtl" style="height: 10px">
<asp:DropDownList ID="drpEditBranch" runat="server" CssClass="ddl"
DataSourceID="sqlBranch" DataTextField="bName" DataValueField="bId"
Width="250px">
</asp:DropDownList>
</td>
<td>
<strong>:مرتبط با رشته</strong></td>
</tr>
</table>

</EditItemTemplate>


</asp:TemplateField>
<asp:CommandField DeleteText="حذف" ShowDeleteButton="True" />
<asp:CommandField CancelText="انصراف" EditText="ویرایش"
ShowEditButton="True" UpdateText="ویرایش" />
</Columns>
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<EditRowStyle BackColor="#999999" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>و بلاخره کد زیر رو برای آپدیت نوشتم:


protected void gdwSubject_RowCommand(object sender, GridViewCommandEventArgs e)
{
try
{
if (e.CommandName.Equals("Update"))
{
LinkButton btnNew = e.CommandSource as LinkButton;
GridViewRow row = btnNew.NamingContainer as GridViewRow;
if (row == null)
{
return;
}
TextBox txtEditName = row.FindControl("txtEditName") as TextBox;
RadioButtonList rblEditActive = row.FindControl("rblEditActive") as RadioButtonList;
RadioButtonList rblEditType = row.FindControl("rblEditType") as RadioButtonList;
DropDownList drpEditBranch = row.FindControl("drpEditBranch") as DropDownList;
DropDownList drpEditState = row.FindControl("drpEditState") as DropDownList;
TextBox txtEditUser = row.FindControl("txtEditUser") as TextBox;
SqlCommand cmd = new SqlCommand(
"UPDATE tbl_Users SET uName = @uName, uType = @uType, bId = @bId, sId = @sId, uActive =@uActive WHERE (uName = @uName)",
cnn);
cmd.Parameters.AddWithValue("uName", txtEditUser.Text);
cmd.Parameters.AddWithValue("uId", gdwSubject.DataSourceID);
cmd.Parameters.AddWithValue("uName", txtEditName.Text);
cmd.Parameters.AddWithValue("uType", rblEditType.SelectedItem.Text);
cmd.Parameters.AddWithValue("bId", drpEditBranch.SelectedValue);
cmd.Parameters.AddWithValue("sId", drpEditState.SelectedValue);
cmd.Parameters.AddWithValue("uActive", rblEditActive.SelectedItem.Text);

cnn.Open();
if (cmd.ExecuteNonQuery() > 0)
{
gdwSubject.DataBind();
}
}
}
catch (Exception ex)
{

}
finally
{
cnn.Close();
}

}اما بعد از این که زمان اجرا عبارت ویرایش رو کلیک می کنم دستورات اجرا میشن ولی در بانک چیزی آپدیت نمیشه و صفحه هم The resource cannot be found میده مشکل از کجاست؟

Rejnev
پنج شنبه 10 دی 1388, 18:58 عصر
سلام
توی



cmd.Parameters.AddWithValue("uName", txtEditUser.Text);


نباید بنویسید



cmd.Parameters.AddWithValue("@uName", txtEditUser.Text);


:متفکر:
تازه توی شرط where دقت کنید چون شما از طرفی uName رو مقدار میدین و از طرفی در شرط where استفادش میکنید.

imanasp
پنج شنبه 10 دی 1388, 20:36 عصر
سلام
توی



cmd.Parameters.AddWithValue("uName", txtEditUser.Text);


نباید بنویسید



cmd.Parameters.AddWithValue("@uName", txtEditUser.Text);


:متفکر:
تازه توی شرط where دقت کنید چون شما از طرفی uName رو مقدار میدین و از طرفی در شرط where استفادش میکنید.





آره حق با شماست :خجالت:

اما مگه نباید مقدار uName رو در شرط where با
cmd.Parameters.AddWithValue("@uName", txtEditUser.Textمشخص کرد اگه این فیلد رو معرفی نکنی برنامه از فیلد uName خطا میگیره

حالا اگه بخام توسط کلید جدول که در گرید نشون نمیدم update انجام بدم باید به جای uId که کلید جدوله چه کدی بنویسم


SqlCommand cmd = new SqlCommand(
"UPDATE tbl_Users SET uName = @uName, uType = @uType, bId = @bId, sId = @sId, uActive =@uActive WHERE (uId = @uId)",
cnn);
cmd.Parameters.AddWithValue("@uId", ???????)اسم گریدویو gdwSubject هستش

imanasp
جمعه 11 دی 1388, 07:28 صبح
نگفتی فیلد uId رو چطوری باید تو command اعلان کنم؟؟؟؟؟؟

bahar_engineer
جمعه 11 دی 1388, 11:13 صبح
من شخصا هر وقت فیلد کلید رو توی گریدویو نمایش ندادم خطا داده بهم
برای همین همیشه فیلد کلید رو نمایش می دم

البته شاید بتونی visible شو false کنی اما فکر کنم این کار رو هم کردم و باز جواب نگرفتم

به هر حال فیلد کلیدتو نمایش بده

یا اینکه توی یه کوئری فیلد کلید اون سطر رو بدست بیار و توی یه متغیر بریز بعد ازش استفاده کن
حقیقتش من کدها تو ندیدم چون خیلی طولانی بود اما امیدوارم کمکت کنه

javadaghaiy
جمعه 11 دی 1388, 12:17 عصر
نگفتی فیلد uId رو چطوری باید تو command اعلان کنم؟؟؟؟؟؟



سلام شما مي تونيد به آقاي رحماني مراجعه كنيد. حلال مشكلات

راستي بابت اين راهنمايي تشكر يادت نره