PDA

View Full Version : سوال: فیلد پنهان



Boo Ali
چهارشنبه 08 آبان 1387, 18:53 عصر
با سلام
من قبلاً این سوال را یکبار مطرح کردم و هیچ جوابی در مورد سوالم نگرفتم ، لطفاً کمک نمائید.
یک GridView دارم که با مقادیر کددرس و عنوان درس پر گردیده است و می خواهم فقط عنوان درس را به کاربران نمایش دهم و مد درس Visible نباشد ، لذا مقدار Visible آن را False می نمائم اما با این کار در کدبرنامه نمی توانم به مقدار فیلد کددرس بدلیل False بودن دسترسی داشته باشم.چه کار کنم؟

kezack
چهارشنبه 08 آبان 1387, 19:50 عصر
دوست خوب جرا از templete استفاده نميكني كه توش از hiddenfield استفاده كني؟

mostafa_sgh
چهارشنبه 08 آبان 1387, 20:11 عصر
سلام دوست عزیز

شما برا دستیابی به مقادیر می تونید از کالکشن DataKeys مربوط به GridView استفاده کنید .
بدین منظور شما باید خاصیت DataKeyNames را برای فیلد هائی که می خواهید از آن استفاده کنید ، مقدار دهی نمائید .

مثال :



<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="ID,BookName" onrowediting="GridView1_RowEditing"
onrowupdating="GridView1_RowUpdating">
<Columns>
<asp:TemplateField Visible="false">
<ItemTemplate>
<asp:Label ID="id" runat="server" Text='<%# Eval("ID") %>' DIR="RTL"
Font-Names="Tahoma"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Text='<%# Eval("BookName") %>' DIR="RTL"
Font-Names="Tahoma"></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtName" runat="server" Text='<%# Bind("BookName") %>' DIR="RTL"
Font-Names="Tahoma"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True"/>
</Columns>
</asp:GridView>




protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindTable();
}
}
private void BindTable()
{
DataTable dt = new DataTable();
DataColumn c1 = new DataColumn("ID", typeof(int));
DataColumn c2 = new DataColumn("BookName", typeof(String));
dt.Columns.Add(c1);
dt.Columns.Add(c2);
dt.Rows.Add(new object[] { 1, "Ajax" });
dt.Rows.Add(new object[] { 2, "VB.Net" });
dt.Rows.Add(new object[] { 3, "C#" });

GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
DataKey dv = GridView1.DataKeys[e.RowIndex];
int bookID = (int)dv["ID"];
// ...
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
BindTable();
}