Terdapat banyak contoh baik mengemas kini senarai tersuai melalui SDK dalam. Inilah satu lagi.
Masalah perniagaan: Borang InfoPath telah direka yang membolehkan pengguna untuk memasukkan online membeli requisitions. Rekuisisi PO nombor perlu urutan tradisional berasaskan nilai-nilai integer dan dikira secara automatik.
Penyelesaian perniagaan yang: Mencipta senarai MOSS tersuai yang mengandungi kedua-dua Ruang: "ControlField" dan "ControlValue". Lajur nilai yang mengandungi jumlah permintaan pembelian seterusnya. Ambil perhatian bahawa generik "mengawal" konvensyen penamaan menyediakan bidang kawalan masa depan yang boleh digunakan apabila diperlukan.
Penyelesaian teknikal: Mewujudkan sebuah perkhidmatan web yang dilayari pelanggan InfoPath. Perkhidmatan web pulangan semula jumlah permintaan pembelian seterusnya dan mengemaskini nilai senarai.
Pengajaran yang dipelajari:
- Apabila menambah perkhidmatan web ini sebagai sumber data untuk membentuk InfoPath, Saya mendapati ia perlu untuk mengubahnya menjadi sebuah udc dan menyimpannya ke dalam Perpustakaan sambungan data.
- Saya juga mendapati ia perlu untuk membolehkan domain salib skrip melalui Perkhidmatan Pusat Pentadbiran // Pengurusan permohonan // Borang konfigurasi pelayan.
- Pertama borang cuba untuk mengakses perkhidmatan web, Ia mengambil masa dan kadang-kadang, Ia akan keluar masa. Saya fiddled dengan seting dalam konfigurasi pelayan borang memperluaskan seting tamat dan yang seolah-olah membantu.
Kod:
menggunakan Sistem;
menggunakan System.Web;
menggunakan System.Web.Services;
menggunakan System.Web.Services.Protocols;
menggunakan Microsoft.SharePoint;
menggunakan System.Configuration;
[WebService(Ruang nama = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
awam kelas PoService : System.Web.Services.WebService
{
awam PoService () {
//Tanda komentar baris berikut jika menggunakan direka komponen
//InitializeComponent();
}
/// <Ringkasan>
/// Mendapatkan nombor PO seterusnya daripada senarai kawalan nombor sharepoint po.
/// Kenaikan jumlah PO dalam senarai itu.
/// </Ringkasan>
/// <pulangan yang></pulangan yang>
[WebMethod]
awam rentetan GetNextPoNumber()
{
rentetan SpPoControlSiteName; // Nama sebenar tapak MOSS yang menghoskan senarai kawalan PO.
rentetan SpPoControlListName; // Nama sebenar senarai MOSS yang mengandungi kawalan itu Po.
SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();
rentetan nextPoReqNumber = "xyzzy";
menggunakan (SPSite lokasi = baru SPSite(SpPoControlSiteName))
{
menggunakan (SPWeb web = halaman. OpenWeb())
{
SPList currentList = web. Senarai[SpPoControlListName];
foreach (SPItem controlItem dalam currentList.Items)
{
jika (((rentetan)controlItem["ControlField"]).Adalah sama dengan("NextPoNumber"))
{
nextPoReqNumber = (rentetan)controlItem["ControlValue"];
int int_nextPoReqNumber;
int_nextPoReqNumber = Menukar.ToInt32(nextPoReqNumber);
int_nextPoReqNumber ;
controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}
} // Mengesan, membaca dan mengemaskini jumlah PO dalam senarai.
} // menggunakan spweb web = site.openweb()
} // menggunakan laman web spsite = baru spsite("http://localhost/mizuho")
kembali nextPoReqNumber;
}
}